ich habe ein kleines Problem im C. Wahrscheinlich habe ich mich auch nur selber verwirrt und es ist gar nicht so schwer.
Also ich habe eine einfache ascii Textdatei in der ersten Spalte (die ich auch einlesen moechte) stehen Buchstaben/Zahlen kombinationen, sowas wie
xz78y
jt55j usw.
Ich moechte diese Textdatei einlesen und die erste Spalte in einen String schreiben (wenn da moeglich ist) um dann spaeter diese mit strcmp zu vergleichen.
Ich moechte diese Textdatei einlesen und die erste Spalte in
einen String schreiben (wenn da moeglich ist) um dann spaeter
diese mit strcmp zu vergleichen.
Also so sieht das grobe gerüst aus, um ein Datei einzulesen:
FILE\* fp;
fp = fopen("datei.txt","r");
if ( fp != NULL )
{
char buff[512]; // muss lang genug sein
// Zeile für Zeile in buff einlesen
while ( fgets(buff, sizeof(buff), fp) != NULL ) // solange bis Dateiende erreicht
{
// an dieser stelle hast du die aktuelle Zeile im buff-String
// diesen kannst du jetzt parsen (kopiere alles, bis das erste leerzeichen/ trennzeichen kommt)
// Stringterminierung '\0' nicht vergessen
// dann kannst du den string ins array speichern
}
}
Denn bisher habe ich immer nur Zahlen in ein Array eingelesen
aber das hilft mir hier nicht weiter oder?
Ein String in C enspricht ein Array von Zeichen, wobei das Ende mit ‚\0‘ gekennzeichnet wird.
Möchtest du jetzt ein Array von Strings haben, musst du ein Array vom Array von Zeichen erstellen:
#include
int main ()
{
FILE\* fp;
fp = fopen("datei.txt","rt");
if ( fp != NULL )
{
char tempList[3][128];
while ( (fscanf(fp, "%s %s %s",
tempList[0], tempList[1], tempList[2])
)
!= EOF
)
{
/\* mit den drei Strings etwas machen \*/
}
}
return 0;
}
Am Ende der Datei kommt das „EOF“, und die Schleife bricht ab.
Das „EOF“ ist ein Makro, das mit der Rückgabe von fscanf() verglichen wird.
Du bearbeitest also immer nur eine Zeile zur Zeit. Finde ich persönlich so am besten.
Die fscanf() unterscheidet die 3 Strings nach Weissräumen, liest also je 3 Wörter ein.