Segmentation fault in fscanf();
-
Hallo,
ich habe einen Segmentation Fault in der fscanf() Zeile folgender Funktion:void get_words(hangman &wort){ // read an ASCII file and look for words FILE * fp; char * buf; fp=fopen("hangman.config","r"); fscanf(fp,"%s",buf); chose_word(buf,wort); fclose(fp); }
ich frage mich was da schief läuft?!? Habe das ganze auch schon mit
fgets(buf,1024,fp) versucht und dabei den buffer als char buf[1024] deklariert
aber da kam derselbe fehler.Viele Dank im Voraus,
felix
-
Du musst für buf geng Speicher reservieren, dass die ganze Zeile reinpasst. Im moment zeigt buf auf einen undefinierten Bereich.
Edit:
Noch was: Überprüf doch bitte, ob fp != NULL ist, dass du sicher sein kannst, dass die Datei auch geöffnet werden konnte.
-
Also note that you shouldn't do call like this anyway, as size of string is not specified (to fscanf call) and so buffer of any size might be not enough.
-
Was sie dir sagen wollten ist das du deinen code so ändern sollst:
void get_words(hangman &wort){ // read an ASCII file and look for words FILE * fp; char * buf; //Alternativ ohne allozieren char buf[1024] buf = (char *)malloc(1024*sizeof(char)); //Speicher für deine Zeile holen fp=fopen("hangman.config","r"); if(fp == NULL) // Prüfen ob das öffnen geklappt hat { //error } else { fscanf(fp,"%s",buf); chose_word(buf,wort); fclose(fp); } }
mfg tobZel