title: Reading a file line by line in C
body: <p>I am trying to write some code that will open a file, read its content line by line and store each of these lines into an array.</p>
  
  <p>First I open the file and count the number of lines, each of the lines is of a fixed length so I simply do this : </p>
  
  <pre><code>    char buf2[LINE_LENGTH];
      int in2 = open("toSend2", O_RDONLY);
      int number_of_lines = 0;
  
      for (;;)
   {
    char* p2 = buf2;
    int count = read (in2, p2, LINE_LENGTH);
    if (count &lt; 0)
    {
      printf("ERROR");
      break;
    }
    if (count == 0) break; 
  
    number_of_lines++;
  
    printf("count: %d \n",count);
    printf("File 2 line : %s", p2);
    printf("\n");
  
   }
   close (in2);
  </code></pre>
  
  <p>So far, this works well, number_of_lines is indeed the number of lines in the file "toSend2" and each of my printf are the lines contained in that file.</p>
  
  <p>Now with the number of lines, I create an array of strings and then I basically go through the whole file again but this time, I would like to store each of the lines in the array (there's probably a better way to find out the number of lines in a file, but everything that I tried has failed !)</p>
  
  <pre><code>    char * array[number_of_lines];
      int b=0;
      int in3=0;
      in3 = open("toSend2", O_RDONLY);
      for (;;)
   {
    char* p3 = buf3;
    int count = read (in2, p3, LINE_LENGTH);
    if (count &lt; 0)
    {
      printf("ERRORRRRRR");
      break;
    }
    if (count == 0) break;
  
  
    array[b] = p3;
    b++;
  
    printf("count: %d \n",count);
    printf("FILE 2 LINEEEEEE : %s", p3);
    printf("\n");
  
   }  
   close(in3);
  </code></pre>
  
  <p>This, of course, doesn't work : each of my printf are the right line plus the last line of the file, for example, the first printf would be : </p>
  
  <p>FILE 2 LINEEEEEEE : "1st line of the file"
  "last line of the file"</p>
  
  <p>And after this for loop, when I trace the contents of my array, every item in it is simply the last line of the file.  I think this is because I simply put the same pointer (pointing to a different line at that moment) in the array each time, but in the end it will point to the last line, therefore everything will be the last line.</p>
  
  <p>How would I solve my problem ?</p>
  
  <p>p.s.: I just started C, so please do not assume I know even basic things about it :(</p>