Hallo, On Monday 27 March 2006 11:46, Benjamin Rogge wrote:
Hallo, ich habe ein Programm, dass sich beim Aufruf von fopen immer mit einem Speicherzugriffsfehler beendet. Ich kann leider den Fehler nicht finden.
#include
#include #define BUFF_SIZE 256 /* [...] */ int main(int argc, char* argv[]) { /* [...] */ char buffer[BUFF_SIZE]; /* [...] */ fputs("Enter filename: ",stdout); if(fgets(buffer,BUFSIZE-1,stdin)==NULL) { perror("fgets"); return -1; }
FILE* inputFile; if((inputFile = fopen(buffer,"r"))==NULL) { perror("fopen"); return -1; } /* [...] */ return EXIT_SUCCESS; }
Mein GDB (Version 5.2.1) sagt mir, dass der Speicherzufriffsfehler von chunk_free() ausgelöst wird. chunk_free() wird irgendwann von malloc() benutzt, welches dann von fopen() aufgerufen wird. Ich kompiliere mit gcc (Version 3.2).
Vielen Dank für eure Hilfe.
fgets() speichert auch Zeilenumbrüche (new lines, '\n') in den buffer. Das
sollte entfernt werden bevor fopen() mit dem Inhalt von buffer aufgerufen
wird.
Zum Beispiel:
#include