datei auslesen und 2.ten Wert in Variable speichern
-
Hi,
ich hab ein Spezialproblem
ich lese eine .txt Datei zeilenweise aus. Diese Datei is durch komma getrennt. Beispiel test.txt:BlaBla1,5,234,Wed Dec 05 10:11:00 2001
test2.txt,2,80,Fri Sep 23 14:27:58 2005
blabla2,5,597,Sun Apr 10 12:40:08 2005
test3.txt,2,80,Fri Sep 23 14:27:58 2005
test4.txt,2,80,Fri Sep 23 14:27:58 2005Wie zu sehen ist, ist in jeder Zeile nach dem ersten Komma eine Zahl. ISt diese Zahl eine 5, brauche ich den Namen (blabla) in einer Variable. ist der Wert nach dem Komma ungleich 5, kann die Zeile ignoriert werden.
Mein Lösungsansatz:char deli[] = ","; char *token; char *vergleich="5"; char string[200]; FILE *quelldat; FILE *zieldat; void main () { if(!(quelldat = fopen("C:\\TEST\\DIR\\dir.txt","r"))) { perror("\n\nFEHLER: Lesen der Directorydatei"); } else { zieldat = fopen("C:\\TEST\\DIR\\ziel.txt","w"); printf( "Tokens:\n\n\n" ); while(!feof(quelldat)) { fgets(string,200,quelldat); token = strtok( string, deli); while( token != NULL ) { printf( " %s\n", token ); token = strtok( NULL, deli ); if (token==vergleich) { printf("\n\nif\n"); } } fputs(string,stdout); fputs(string,zieldat); printf("\n"); } printf("\n\nDatei wurde erfolgreich ausgelesen"); getchar(); } }Ich hoffe die erfahrenen C+ Programmierer hier, können mir weiterhelfen.
Danke!!<edit>Bitte Code-Tags verwenden!</edit>
-
1. Das ist reines C -> Ansi C Forum
2. Code-Tags benutzen, dann lässt es sich besser lesen
3. Der Vergleich "token == vergleich" tut nicht das, was Du willst. Du vergleichst damit Pointer und die werden in Deinem Fall immer verschieden sein. Du willst die Inhalte vergleichen. Wenn Du weisst, dass es eine Zahl sein soll, dann wandele token mittels atoi in eine Zahl und vergleiche die mit 5 oder nutz strcmp, wenn Du char* vergleichen willst.
-
Izeman schrieb:
Hi,
ich hab ein Spezialproblem
Echt? Cool! Erzähl mal, ist bestimmt interessant!
Bye, TGGC (Demo or Die)