Leyendo un archivo línea por línea en C

Estoy tratando de escribir algún código que abra un archivo, lea su contenido línea por línea y almacene cada una de estas líneas en una matriz.

Primero abro el archivo y cuento el número de líneas, cada una de las líneas es de una longitud fija, así que simplemente hago esto:

    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 < 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);

Hasta el momento, esto funciona bien, number_of_lines es de hecho el número de líneas en el archivo "toSend2" y cada una de mis printf son las líneas contenidas en ese archivo.

Ahora, con el número de líneas, creo una matriz de cadenas y luego vuelvo a revisar todo el archivo, pero esta vez, me gustaría almacenar cada una de las líneas en la matriz (probablemente haya una mejor manera de averiguar el número de líneas en un archivo, pero todo lo que probé ha fallado!)

    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 < 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);

Esto, por supuesto, no funciona: cada uno de mis printf es la línea correcta más la última línea del archivo, por ejemplo, el primer printf sería:

ARCHIVO 2 LINEEEEEEE: "1ª línea del archivo" "última línea del archivo"

Y después de esto para el bucle, cuando rastreo el contenido de mi matriz, cada elemento en él es simplemente la última línea del archivo. Creo que esto se debe a que simplemente pongo el mismo puntero (apuntando a una línea diferente en ese momento) en la matriz cada vez, pero al final apuntará a la última línea, por lo tanto, todo será la última línea.

¿Cómo solucionaría mi problema?

p.s .: Acabo de comenzar C, así que, por favor, no asumas que conozco incluso cosas básicas al respecto :(

Respuestas a la pregunta(4)

Su respuesta a la pregunta