Wiedermal ein strtok Problem
-
Hallo Leute,
ich habe folgendes Problem. Beim Auslesen von zwei Dateien mit identischem Aufbau muss ich die beiden Größen y1 (aus Datei1) mit y2 (eh klar) sowie size1 mit size2 vergleichen.
Die Dateien haben den selben Aufbau:
ObjectNr Position(x,y) Size
0 (12,269) 8
1 (25,242) 4
... ... ...Ich möche also aus beiden Files die Fett hervorgehobenen Werte herausbekommen und anschließend mit strcmp vergleichen.
Da ich in C nicht gerade ein Genie bin habe ich mich im Forum schon umgeschaut und unter http://www.c-plusplus.net/forum/viewtopic-var-t-is-39338.html ein ähnliches Problem gefunden. Anscheinend ist mir die Funktion strtok hier eine Hilfe. Geht diese auch für mein Problem? Wie mache ich des mit den Leerzeichen, Klammer und im Speziellen mit dem "," zwischen den Werten wenn ich obigen Link als Referenz hernehme.Kann ich dann einfach die Werte mit atoi in Int umwandeln und mit if(y1==y2) vergleichen???
Danke für eine Lösung und wie gesagt, ich bin eher ein Anfänger und Coden ist leider (noch
) nicht meine Stärke)
Grüße, Brandy6600066
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Ich würde an deiner Stelle eher fscanf verwenden - mit dem richtigen Formatstring kümmert sich das um die Zerlegung UND das Parsen der Eingabe:
fscanf(file,"%*d (%d,%d) %d",&x,&y,&s);
Der Befehl liest eine Zeile aus der Datei, verwirft die Objekt-Nummer und verteilt die Koordinatenwerte und Größenangabe auf die Variablen x, y und s. (anschließend kannst du die gelesenen Werte ganz normal vergleichen)
-
Hallo,
danke für den Input. Leider reicht mein fachliches C Können nur zu Fehlern. Ich schreib mal meinen Code:
int main (int argc, char **argv){ FILE* data1, *data2; //Fuer beide Listen int x1, x2, y1, y2, size1, size2; //Variablen zur Auswertung //Erstes File data1 = fopen("liste1.list", "r"); //Oeffnet erstes File if(data1 == NULL){ fprintf(stderr, "No such file or directory\n"); } while(fscanf(data1,"%*d (%d,%d) %d", &x1,&y1,&size1) != 0) { //Zweites File data2 = fopen("liste2.list", "r"); //Oeffnet zweites File if(data2 == NULL){ fprintf(stderr, "No such file or directory\n"); } while(fscanf(data2,"%*d (%d,%d) %d", &x2,&y2,&size2) != 0) { if(y1==y2) fprintf(stdout, "y1 and y2 are the same"); else fprintf(stdout,"not the same"); } } }
Wie gesagt, ich muss beide Files durchgehen und jedes y1 mit jedem y2 vergleichen - damit ich die gleichen y-Werte identifizieren kann. Aber ich glaube ich habe da noch einen Denkfehler bzw. funktioniert die if-Abfrage so nicht
Hoffentlich kann mir dabei jemand nen Tipp geben.
Lg und Danke
Brandy6600066Edit: Auch bei einer simplen Ausgabe der Werte y1 werden utopische Zahlen ausgegeben - jetzt bin ich total verwirrt
-
Ich würde ja zunächst beide Dateien komplett einlesen (in jeweils ein eigenes Array) und dann im Speicher vergleichen.
PS: Und wenn die Dateien noch eine Tabellenüberschrift haben, mußt du erstmal daran vorbeilesen.