Einlesen einer Datei in Array

sis1981

Grünschnabel
Hi!

Ich möchte eine .txt-Datei zeilenweise auslesen um den Inhalt später zu sortieren. Dazu speichere ich die ausgelesenen Zeilen in einem Array.

Ich habe folgenden Code:

char *lineptr[cnt_file]; /* Zeiger auf Textzeilen */

ifstream finSort(cFile);

int l;

for (l = 0 ;l<cnt_file;l++) {
char cSort[256];
finSort.getline(cSort, 256);
lineptr[l] = cSort;
cout << lineptr[l] << endl;
}
...

Möchte ich nun auf das Array lineptr zugreifen, so bekomme ich keine vernünftige Anzeige.
Was mache ich falsch?

Gruß,
sis1981
 
Du mußt für jede Zeile ein neues char[256] anlegen. So überschreibst Du immer wieder das gleiche und in lineptr stehen immer die gleichen Zeiger auf cSort.
Code:
char *lineptr[cnt_file]; /* Zeiger auf Textzeilen */
      memset(lineptr, 0, cnt_file * sizeof(char*))
      ifstream finSort(cFile);
      
      int l;
      
      for (l = 0 ;l<cnt_file;l++) {
      char *cSort = new char[256];
      finSort.getline(cSort, 256);
      lineptr[l] = cSort;
      cout << lineptr[l] << endl;
 }
Wenn Du lineptr nicht mehr brauchst, dann mußt Du natürlich alle enthaltenen Zeiger (alle, die nicht NULL sind) wieder freigeben.
Code:
I = 0;
   while((lineptr[I]!= NULL) && (I < cnt_file))
   {
     delete[] lineptr[I];
     I++;
   }
Eine andere Möglichkeit wäre:
Code:
char *lineptr[cnt_file][265]; /* Zeiger auf Textzeilen */
       
       ifstream finSort(cFile);
       
       int l;
       
       for (l = 0 ;l<cnt_file;l++) {
     finSort.getline(lineptr[l], 256);
       cout << lineptr[l] << endl;
       }
 
Zurück