Eine Datei Zeile für Zeile in C lesen

Ich versuche, Code zu schreiben, der eine Datei öffnet, deren Inhalt zeilenweise liest und jede dieser Zeilen in einem Array speichert.

Zuerst öffne ich die Datei und zähle die Anzahl der Zeilen. Jede Zeile hat eine feste Länge, also mache ich einfach Folgendes:

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

Bisher funktioniert das gut, number_of_lines ist in der Tat die Anzahl der Zeilen in der Datei "toSend2" und jedes meiner printf sind die Zeilen in dieser Datei.

Mit der Anzahl der Zeilen erstelle ich ein Array von Zeichenfolgen und gehe dann im Grunde die gesamte Datei erneut durch. Dieses Mal möchte ich jedoch jede Zeile im Array speichern (wahrscheinlich gibt es einen besseren Weg, um die Anzahl herauszufinden von Zeilen in einer Datei, aber alles, was ich versucht habe, ist fehlgeschlagen!)

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

Das funktioniert natürlich nicht: Alle meine printf sind die richtige Zeile plus die letzte Zeile der Datei, zum Beispiel wäre der erste printf:

FILE 2 LINEEEEEEE: "1. Zeile der Datei" "letzte Zeile der Datei"

Und wenn ich nach dieser for-Schleife den Inhalt meines Arrays verfolge, ist jedes Element einfach die letzte Zeile der Datei. Ich denke, das liegt daran, dass ich einfach jedes Mal den gleichen Zeiger (der zu diesem Zeitpunkt auf eine andere Zeile zeigt) in das Array setze, aber am Ende wird er auf die letzte Zeile zeigen, daher wird alles die letzte Zeile sein.

Wie würde ich mein Problem lösen?

ps .: Ich habe gerade mit C angefangen, also gehe bitte nicht davon aus, dass ich überhaupt grundlegende Dinge darüber weiß :(

Antworten auf die Frage(4)

Ihre Antwort auf die Frage