Programm geht flöten bei einfachem Stringvergleich
-
Hi,
ich hab hier nen Code und da geht bei dem Stringvergleich mein Programm flöten:
char cVal[256]; fscanf (*fp, "%c", &cVal); if(strcmp(cVal, "true")) // hier geht es flöten.... p_tile->coll = true; else p_tile->coll = false;
Was ist daran falsch? ich teste doch nur ob in der Datei ein "true" steht?!?!
-
"%s"
-
und das sieht auch nich richtig aus: *fp
was is fp?
-
das ist *fp:
void readTile (FILE **fp, CTile *p_tile);
Aber daran liegt es net, sonst würde die Funktion an anderen stellen auch abkratzen. an dem "%c" lag es auch net.
-
hää?? warum erstellst du überhaupt nen Zeiger auf nen Zeiger??
-
man liest aus ner datei mit fread
-
meine fresse... JA ACH WAS???? Kannst ja 3x Raten wieso ich fscanf(); statt fread(); benutze!!!
Das hat schon seinen guten Grund! Wenn ich hier meine 600 Zeilenfunktion posten würde, dann würde es kein Mensch mehr verstehen! Darum hab ich mich auch NUR auf das Wesentliche bezogen!
Kapische?
-
fscanf(); statt fread(); benutze!!!
Ich weiss es nicht und kann es mir auch nicht erraten. Könntest du das bitte erklären?
-
weil ich halt ne dicke if/else abfrage in der Funktion habe und nur gezielt einzellne daten rauslese. Aber BIIIIITTTTTTTTTTTEEEEEEEEEEEEE können wir uns mal aufs Wesentliche beziehen? Nämlich den Stringvergleich?
-
Der String-Vergleich ist richtig. Das du deinen Programmcode kürzt ist doch okay, aber trotzdem kannst du doch trotzdem dafür fread benutzen. Bist du dir sicher das das Problem nicht woanders liegt?
-
100% weil fscanf rufe ich in der funktion ca. 60x auf und es ist NUR in dieser kleinen Zeile der Fehler wenn ich diese Zeilen auskommentiere funzt es perfekt!
-
Dieser Code funzt perfekt ohne Absturtz
char cVal[256] = "true"; if(strcmp(cVal, "true") == 0) { printf("true\n"); } else { printf("false\n"); }
-
bei mir leider net
-
Dann liegts auch nicht daran!! Sondern woanders!!
-
else if (strcmp (p_chMember, "coll:") == 0) { fscanf (*fp, "%s", &cVal); if(strcmp(cVal, "true") == 0) /// GENAU HIER GEHT ER FLÖTEN! { p_tile->coll = true; } else { p_tile->coll = false; } }
GENAU DA wo Makiert ist, genau ab da bricht das programm ab! GENAU DA!
-
Benutz einfach deinen Debugger.
-
fscanf (*fp, "%s", &cVal);
ändern in
fscanf (*fp, "%s", cVal);
-
[Edit] Man sollte erst richtig lesen, bevor man postet *g [/Edit]
[ Dieser Beitrag wurde am 08.02.2003 um 02:10 Uhr von SnorreDev editiert. ]
-
Und wenn du wirklich meintest das liegt da immer noch, dann mach uns doch eine klitze kleines konsolen programm fertig, das den fehler zeigt.
-
@vielleicht:
THX! Das wars! Rein Logisch gesehen dürfte das net gehen, aber irgendwie meckert mein Compiler dabei net und es läuft stabil! THX nochmal