# [C] Datei Zeilenweise und mit Trennzeichen auslesen



## eternitysoft (9. Juni 2010)

Hallo,

ich habe mal wieder ein Problem an dem ich gerade sitze und nicht so recht weiter komme.

Und zwar habe ich eine Textdatei mit folgendem Aufbau:


```
Name;Straße;Ort;
Name2;Straße2;Ort2;
...
```
Problem ist, ich schaffe es gerade nicht wirklich die Datei vernünftig auszulesen.

Ich habe es mit fscanf schon probiert, aber ein einfache *%s *tut es ja nicht, da das Zeichen *;* ja nicht als Trennzeichen erkannt wird.


```
while( fscanf(stream,"%s %s\n",name, street, place) != EOF)
        {
            printf("\n %s \n %s \n %s \n\n",name, street, place);
        }

        fclose ( stream );
```
Ich stehe gerade ein wenig auf dem Schlauch, wäre über hilfe sehr dankbar.

Mit freundlichen Grüßen


----------



## deepthroat (9. Juni 2010)

Hi.

Zeilenweise kannst du mit fgets auslesen.

Die Zeile könntest du dann z.B. mit strtok oder mit sscanf verarbeiten. Bei letzerem könnte man z.B. den Formatspezifizierer %[^;] verwenden.

Es gab auch einige ähnliche Themen mit Lösungen. 

\edit: z.B. http://www.tutorials.de/forum/c-c/353853-c-zeilenweises-parsen-einer-datei.html

Gruß


----------



## brunlorenz (9. Juni 2010)

Hallo, hier mal ein Beispiel:

```
struct addr {
char *street;
char *name;
char *place;
};

int main()
{
struct addr adressen[100]; //100 Adressen maximal
char temp[1000];
FILE *f;
int z=0;
f=fopen("deinedatei.txt","r");
for(z=0;fgets(temp,sizeof temp,f)!=0;z++)
{
adressen[z].name=strtok(temp,";");
adressen[z].street=strtok(NULL,";");
adressen[z].place=strtok(NULL,";");
printf("\n %s \n %s \n %s \n\n",adressen[z].name,adressen[z].street,adressen[z].place);
}
return 0;
}
```
PS: Ich habe eine Struktur genommen, da du ja viele Elemente einlesen willst 
Lorenz


----------



## eternitysoft (9. Juni 2010)

Hey danke euch beiden, ich werde es mir mal anschauen.

@lorenz: Ich kenne structs etc, ich hätte die ja auch benutzt, nur leider darf ich keiner strukturierte Variablen benutzen, aber das anpassen ist ja kein Problem


----------



## brunlorenz (10. Juni 2010)

Schon mal was vom Danke-Button gehört?


----------

