# C: struct mit Daten aus Datei füllen



## makuri (12. Mai 2006)

Hallo,

ich möchte ein struct mit den Daten aus einer Datei füttern. Momentan wird aber nur die erste Zeile auf dem Bildschirm ausgegeben. Wie kann ich nun "alle" Einträge der Datei auf dem Bildschirm ausgeben ? Ein weiteres Problem sind Leerzeichen, die nunmal ab und zu in einer Bezeichnung (hier als Name) auftreten. Wie kann man diese als ganzen String einlesen ?


```
#include<stdio.h>

struct person {

	int pers_nr;
	char vname[20];
	char nname[20];
	char aufgabe[20];

};

struct person einlesen() {

	struct person no_name;
	FILE *datei;
	datei = fopen("daten.txt","r");
	fscanf(datei,"%d\t%s\t%s\t%s", &no_name.pers_nr, &no_name.vname, &no_name.nname, &no_name.aufgabe);
	return no_name;

}

void ausgabe(struct person bs) {

	printf("\nPers.Nr\tVorname\t\t\tNachname\t\tAufgabe");
	printf("\n\n%d\t%-20s\t%-20s\t%s\n", bs.pers_nr, bs.vname, bs.nname, bs.aufgabe);

}

void main() {

	struct person eins;
	eins = einlesen();
	ausgabe(eins);

	getch();
}
```

Inhalt der Text Datei:


```
45000	Dagobert	Duck	Nutzer1
45001	Annemarie Louise	Meier	Nutzer2
45002	Claudia	Meier Schmidt	Nutzer3
```


----------



## RedWing (14. Mai 2006)

Hallo, 

wie wäre es die Datei Zeilenweise mit fgets einzulesen und dann mittels der Funktion
strtok die Zeile mit "\t" als delimiter zu splitten?

Siehe:
http://www.cplusplus.com/ref/cstdio/fgets.html
http://www.cplusplus.com/ref/cstring/strtok.html


Gruß

RedWing


----------

