Beim Auslesen von Datei wird Quellcode angezeigt
-
Hi Forum,
mein Problem ist etwas sehr merkwürdig. Ich werde es mal schildern ohne Quellcode, vielleicht hatte jemand schonmal das gleiche oder ein ähnliches Problem.
Ich habe eine Textdatei, die die Form
a b
c ab
...
hat. Die Buchstaben werden dann Schritt für Schritt in ein Array-Feld (af[max][auch_max]) eingetragen. Es klappt alles ganz wunderbar, bis er dann mit einer Fehlermeldung abbricht.
Lässt man sich die Werte ausgeben, die er einliest, so kriegt man immer die aus dem Text-File, aber kurz vor der Fehlermeldung liest er angeblich "af[max][[auch_max]", also Text aus meinem Quellcode, ein.
Wie kann sowas sein? Der Debugger erzählt mir es sei ein Error bzgl. feof(*FILE), aber die Datei ist bei weitem noch nicht zu Ende und die Dimension des Feldes groß genug.
Und jetzt der Standard-Witz an der ganzen G´schicht: Gestern gings nochWeiß jemand was man da machen kann, so allgemein? Oder was der Grund sein kann? Hat jemand schonmal sowas ähnliches gehabt?
Danke, ich weiß es ist etwas abstrakt, aber der Code wäre hier echt zu lang. Btw: Es werden keine für die Ausführung dieses Bereiches relevanten Warnungen geschmissen.
Grüße
Dude
-
vielleicht sollteste doch mal den quelltext hier zeigen?
-
Gut, nachdem ich alles andere auskommentiert habe und der Fehler dennoch bleibt, beschränkt sich der Quelltext auf folgeden Code:
#define MAX_TO 10 //Buchstaben links vom Tab #define MAX_FROM 5 //Buchstaben rechts vom Tab #define NUM_TAB_ONE 84 //#Zeilen Tabelle 1 #define NUM_TAB_TWO 62 //#Zeilen Tabelle 2 unsigned int table_one[NUM_TAB_ONE][MAX_TO+MAX_FROM+2]; //erste Tabelle unsigned int table_two[NUM_TAB_TWO][MAX_TO+MAX_FROM+2]; //zweite Tabelle void make_table(FILE *original) { unsigned int *ptable; char string[100]; if (original) {pTable = table_one; while(!feof(original)) {fgets(string,100,original); printf("%s",string); } } } int main(void) { FILE *original original=fopen("table.txt","r"); make_table(orig); return 0; }
Der Witz ist jetzt, dass er mir bei der Ausgabe der Textdatei an zwei beliebigen Stellen (aber immer die gleichen) ein Ausgabe liefert mit:
aa bb
aa bb
aa bb
cc ddtable_one[NUM_TAB_ONE][MAX_TO+MAX_FROM+2] (<-- das hier 2x)
gg hh
ii jj
...any ideas?
-
Naja, mir ist es ehrlichgesagt fast peinlich, aber ich hab herausgefunden, warum es drinsteht: Weil es drinsteht
Ich hab kurz vorher eine Datei schreiben wollen und dabei hat er es mir nicht in diese Datei geschrieben, sondern wohl in mein Originalfile. Emacs hat mir das leider nicht unmittelbar (trotz reload) angezeigt. Fragt nicht warum oder warum
ein solcher String überhaupt geschrieben wurde (war nämlich auch nicht meine Absicht).Jedenfalls geht es jetzt wieder! Brauch nen Kaffee!
Grüßle