deluxe
Stammgast
Hallo Leute
Ich schreibe momentan ein Programm, in welchem der User eine Datei öffnen kann, welche nach dem Schema:
string1=string2\n
string3=string4\n
...
aufgebaut ist.
Es sollen Wörter abgefrat werden.(Sprachtraining)
Das Problem ist, das meine Programm je nach Datei-Ihnalt mit der Meldung "main.exe hat ein problem festgestellt und musste beendet werden..." abbricht. Ich habe aber null Ahnung an was es liegen könnte.
hier mal ein Ausschnitt, von wo das Problem wahrscheinlich kommt:
numlines ist die Anzahl Zeilen, die das Programm hat.
strtok wurde schon aufgerufen mit einem Zeiger der auf den String zeigt, in dem der Inhalt der Datei gespeichert ist.
wordlist ist folgendermassen deklariert:
Ich glaube ich habe irgend einen Logikfehler gemacht, komme jedoch nicht drauf. Habs auch schon mit strchr probiert habs dann aber gelasse, da strtok einfacher zu verwenden ist.
Kompiler und Linker ist TCC(Tiny C Compiler)
Hoffe jemand weiss rat ;)
Ich schreibe momentan ein Programm, in welchem der User eine Datei öffnen kann, welche nach dem Schema:
string1=string2\n
string3=string4\n
...
aufgebaut ist.
Es sollen Wörter abgefrat werden.(Sprachtraining)
Das Problem ist, das meine Programm je nach Datei-Ihnalt mit der Meldung "main.exe hat ein problem festgestellt und musste beendet werden..." abbricht. Ich habe aber null Ahnung an was es liegen könnte.
hier mal ein Ausschnitt, von wo das Problem wahrscheinlich kommt:
Code:
for(i=1;i<=numlines;i++)
{
temp = strtok(NULL, "=");
if(temp==NULL)break;
wordlen = strlen(temp);
*(*(wordlist+0)+i) = (char*)malloc(wordlen);
strcpy(*(*(wordlist+0)+i), temp);
temp = strtok(NULL, "\n");
if(temp==NULL)break;
wordlen = strlen(temp);
*(*(wordlist+1)+i) = (char*)malloc(wordlen);
strcpy(*(*(wordlist+1)+i), temp);
}
numlines ist die Anzahl Zeilen, die das Programm hat.
strtok wurde schon aufgerufen mit einem Zeiger der auf den String zeigt, in dem der Inhalt der Datei gespeichert ist.
wordlist ist folgendermassen deklariert:
Code:
extern char*** wordlist;//ist extern
...
wordlist = (char***)malloc(2);//(Für die 2 Sprachen
*(wordlist+0) = (char**)malloc(numlines+1);//Für alle
*(wordlist+1) = (char**)malloc(numlines+1);//Zeilen
Ich glaube ich habe irgend einen Logikfehler gemacht, komme jedoch nicht drauf. Habs auch schon mit strchr probiert habs dann aber gelasse, da strtok einfacher zu verwenden ist.
Kompiler und Linker ist TCC(Tiny C Compiler)
Hoffe jemand weiss rat ;)