merkwürdige fehler bei vergleich / grösser
-
loki1985 schrieb:
@MFK: hab deine theorie nochmal durchgedacht, und ich denke daran kann es nicht liegen...
Das ist keine Theorie. Ich habe das mit dem Debugger getestet. Probieren geht über Studieren, wie man so schön sagt.
denn dann dürfte es nur am ende des files abstürzen, aber so wie es aussieht stürzt es entweder nach dem ersten char ab, oder nach dem ersten binären '\n'....
Wie es aussieht? Woraus ziehst du deine Schlüsse? Mein Debugger sagt, dein Programm stürzt am Ende der Datei ab, weil du zum falschen Zeitpunkt auf EOF testest.
-
Daniel E. schrieb:
AJ schrieb:
Deine globale Variable current_enc_asc_digit ist nicht initialisiert in deinem Code, bevor du sie benutzt, d. h. es steht da irgendeine Zahl drin, die du abprüfst in deiner Funktion enc_line().
Globale Variablen werden automatisch mit 0 initialisiert, genau wie bei static.
Stimmt, hab ich ganz verdrängt :(.
-
Wie es aussieht? Woraus ziehst du deine Schlüsse? Mein Debugger sagt, dein Programm stürzt am Ende der Datei ab, weil du zum falschen Zeitpunkt auf EOF testest.
ich habe eine funktion, die mir einige infos in ein logfile schreibt. und in dem logfile kommt es nie über die erste zeile des eingelesenen textfiles hinaus, auch wenn das textfile z.b. 20 zeilen lang ist.... habe testweise mal ein "if (c == EOF) {return 1;}" gleich nach dem fgetc(c); eingebaut, hat aber auch keinen unterschied gemacht...
-
....
zudem stürzt es ja nur ab, wenn man nach dem fgetc das "c = dec_byte(c);" hat.... wenn man das auskommentiert funktioniert es perfekt...
-
loki@school schrieb:
....
zudem stürzt es ja nur ab, wenn man nach dem fgetc das "c = dec_byte(c);" hat.... wenn man das auskommentiert funktioniert es perfekt...
Dann zeig uns doch mal den Code von dec_byte()
-
ich hab mir nur die problemstellung und die ersten paar beiträge angesehen also hoffe ich das das was ich jetzt schreibe nicht schon probiert wurde:
// header file #ifndef _HEADER #define _HEADER // irgendwas #endif #ifdef _GLOBAL extern int g_variable; #else #define _GLOBAL int g_variable; #endif
-
@AJ:
alles hier drin. das alte example ist obsolete, da es das problem nicht direkt reproduziert...loki1985 schrieb:
hier ist die datei:
http://da41d.port5.com/prob2.zip
-
nochmal ein *push*...
wäre echt nett wenn sich einer mal das problem in der datei anschauen könnte, ich bin langsam am verzweifeln...
und wie gesagt, der text-gepostete source reproduziert nicht korrekt, bitte ignorieren !!!
-
*scriptlines[] = {};
Ich kenne mich nicht wirklich gut mit dem aktuellen C-Standard aus, aber es würde mich wundern, wenn dieses Array mehr als ein Element hätte. Du verwendest aber fröhlich höhere Indices.
Wenn ich da z.B. 200 reinschreibe und die EOF-Prüfung korrigiere, läuft es durch.
-
MFK schrieb:
*scriptlines[] = {};
Ich kenne mich nicht wirklich gut mit dem aktuellen C-Standard aus, aber es würde mich wundern, wenn dieses Array mehr als ein Element hätte. Du verwendest aber fröhlich höhere Indices.
Wenn ich da z.B. 200 reinschreibe und die EOF-Prüfung korrigiere, läuft es durch.
danke. scheint genau das problem gewesen zu sein...
dachte immer das es variabel angepasst wird, wenn man das feld frei lässt. naja, mein fehlerwerde noch ein wenig rumtesten, aber jetzt schon vielen dank für die hilfe