# Einlesen einer Datei in Array



## sis1981 (3. Mai 2005)

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


----------



## jokey2 (3. Mai 2005)

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.
	
	
	



```
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.
	
	
	



```
I = 0;
   while((lineptr[I]!= NULL) && (I < cnt_file))
   {
     delete[] lineptr[I];
     I++;
   }
```
     Eine andere Möglichkeit wäre:
	
	
	



```
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;
       }
```


----------



## sis1981 (3. Mai 2005)

Ja, so funktioniert' s. 
Vielen Dank für die schnelle Hilfe


----------

