title: How to copy from a file to an array
body: <p>I have to read an array from a file and the fact i that's the last column is just not being copied. The size of the array and it content is in the file. Here is the code (only the part where the problem is):</p>
  
  <pre><code>#include&lt;stdio.h&gt;
  #include&lt;stdlib&gt;
  int main(int argc, char * argv[]){ 
  char **laberinto;
  char aux;
  fent = fopen(argv[1], "r");
  if
   fprintf(stderr,"Couldn't open.\n");
  else
  {
   laberinto = (char **) calloc(columnas, sizeof(char *));
   for (i = 0; (NULL != laberinto) &amp;&amp; (i &lt; columnas); i++)
    {
        laberinto[i] = (char *) calloc(filas, sizeof(char));
        if (NULL == laberinto[i])
         {
          for ( j = i - 1; j &gt;= 0; j-- )
            free(laberinto[j]); 
          free(laberinto);
          laberinto = NULL;
         }
    }
   for(i = 0, j = 0; i &lt; filas+1; i++)
      for(j = 0; j &lt; columnas+1; j++)
        {
          if(!feof(fent))
            {
              aux = fgetc(fent);
              if(aux == '\n')
              aux = 0;
             }}
  </code></pre>
  
  <p><code>
  Edit 1(full code) it generates a core by the way:</p>
  
  <pre>#include&lt;stdio.h&gt;
  #include&lt;stdlib.h&gt;
  #include"encruta1.h"//Just funcion definitions(not used yet)
  #define ERRORCOMANDO "ERROR: linea de comandos incorrecta. Utilice:\n" 
  #define ERRORCOMAND2 "leelabfich fichero_de_entrada columna_inicio fila_inicio\n"
  //Both are error messages
  
  int main(int argc, char *argv[])
  {
    char **laberinto;
    char aux;
    int i = 0;//Indice para imprimir la tabla
    int j = 0;//Indice para imprimir la tabla
    int columnas = 0;
    int filas = 0;
    int flag1;//Para saber si fscanf ha funcionado bien
    FILE *fent;
  
    //Si son cuatro argumentos es correcto
    if(argc == 4)
     {
      //Apertura de archivo
      fent = fopen(argv[1], "r");
      if(fent == NULL)
       fprintf(stderr,"No se puede abrir el fichero de entrada.\n");
      else
      {
       flag1 = fscanf(fent,"%d%d", &amp;columnas, &amp;filas);
       if(flag1 == 2)
       {
        if(filas &lt; 0 || columnas &lt; 0)
         fprintf(stderr,"Las dimensiones han de ser dos numeros enteros.\n");
        else
         {
         //Reserva de memoria   
         laberinto = (char **) calloc(columnas, sizeof(char *));
         for (i = 0; (NULL != laberinto) &amp;&amp; (i &lt; columnas); i++)
          {
            laberinto[i] = (char *) calloc(filas, sizeof(char));
            if (NULL == laberinto[i])
            {
          for ( j = i - 1; j &gt;= 0; j-- )
            free(laberinto[j]); 
          free(laberinto);
          laberinto = NULL;
            }
          }
  
        //Pasamos el laberinto del archivo a la tabla
  
        for(i = 0, j = 0; i &lt; filas+1; i++)
          for(j = 0; j &lt; columnas+1; j++)
            {
          if(!feof(fent))
            {
              aux = fgetc(fent);
              if(aux == '\n')
                aux = 0;
              else
                laberinto[i][j] = aux;
            }
            }
  
        for(i = 0; i &lt; filas; i++)
          {
            for(j = 0; j &lt; columnas; j++)
          {//Eliminamos los intentos fallidos
            if(laberinto[i][j] == 'o')//Just ignore the o
              laberinto[i][j] = '.';
            printf("%c", laberinto[i][j]);
          }
            printf("\n");
          }
        //Sustituir por donde se libere memoria abajo
        for(i = 0; i &lt; columnas+1; i++)
          free(laberinto[i]);
        laberinto = NULL;
  </code></pre>
  
  <p></p>