Auslesen einer Datei

16/08/2008 - 11:52 von Tom Seidel | Report spam
Hallo!

Ich möchte gerne eine Datei auslesen, die folgendes Format besitzt:

NAME1,VORNAME1,ORT

Diese Dateien werden als dann in einem Array des Typ DESC[100] gespeichert,
worunter sich folgende Struktur verbirgt:

typedef struct {
char *name;
char *vorname;
char *ort;
} DESC;

Je nachdem wie viele Zeilen die Datei besitzt, werden also von den 100
möglichen Array-Elementen 1, 2, 3, n (mit n < 100) Elemente befüllt.

An einer anderen Stelle möchte ich nun die Werte dieses Arrays wieder
ausgeben, weiß aber nicht, wie ich das Ende der Beidingung für die
for-Schleife formulieren soll:

for(i = 0; i < 100, i++) {
printf("Name: %s, Vorname: %s, Ort: %s", array[i].name,
array[i].vorname, array[i].ort);
}

Hier kommt es natürlich so einem Fehler, sobald array[i] nicht mehr einen
Wert besitzt.

Wie umgeht man nun ein solches Problem?

Danke für die Antworten!
 

Lesen sie die antworten

#1 Joachim Schmitz
16/08/2008 - 12:28 | Warnen spam
Tom Seidel wrote:
Hallo!

Ich möchte gerne eine Datei auslesen, die folgendes Format besitzt:

NAME1,VORNAME1,ORT

Diese Dateien werden als dann in einem Array des Typ DESC[100]
gespeichert, worunter sich folgende Struktur verbirgt:

typedef struct {
char *name;
char *vorname;
char *ort;
} DESC;

Je nachdem wie viele Zeilen die Datei besitzt, werden also von den 100
möglichen Array-Elementen 1, 2, 3, n (mit n < 100) Elemente befüllt.

An einer anderen Stelle möchte ich nun die Werte dieses Arrays wieder
ausgeben, weiß aber nicht, wie ich das Ende der Beidingung für die
for-Schleife formulieren soll:

for(i = 0; i < 100, i++) {
printf("Name: %s, Vorname: %s, Ort: %s", array[i].name,
array[i].vorname, array[i].ort);
}

Hier kommt es natürlich so einem Fehler, sobald array[i] nicht mehr
einen Wert besitzt.

Wie umgeht man nun ein solches Problem?



Entweder durch Merken wieviele Elemente eingelesen wurden (und dan die
Ausgabeschleife nicht bis 100 sondern nur bis zu dem gemerkten Wert laufen
lassen), oder durch eine Ende Markierung, d.h. den n+1 ten Eintrag beim
Einlesen mit NULL besetzen (bzw. das gesammte Array mit 0 initialisieren)
und dann bei der Ausgabe (zusàtzlich) darauf abprüfen:
for(i = 0; i < 100 && array[i].name != NULL, i++) {
printf("Name: %s, Vorname: %s, Ort: %s", array[i].name,
array[i].vorname, array[i].ort);
}



Danke für die Antworten!



Tschö, Jojo

Ähnliche fragen