Witam, mam problem z wpisaniem znakow char do tab 3d

char*** tab = allock_array(h,m,n);

    for(int i=0;i<h;i++)
    {
        for(int j=0;j<m;j++)
        {
            gets(tab[i][j]);
        }
    }

Tworzenie 3d

char*** arr;

    arr=new char**[h];


   for(int j=0;j<h;j++)
   {
    arr[j] = new char*[m];

    for(int i=0;i<m;i++)
        arr[j][i] = new char[n];
   }

   return arr;

Nie pobiera mi wszystkich wartosci tzn np dla wartosci

1 4 4

pobiera

@@@
@@@
@@@

i tu konczy nie wchodzi 4 raz w petle

Zauważyłem, że gets nie wykonuje sie w 1 obrocie. Dlaczego?