Hallo,
ich habe ein Programm, dass sich beim Aufruf von fopen immer mit einem
Speicherzugriffsfehler beendet. Ich kann leider den Fehler nicht finden.
#include
On Mon, Mar 27, 2006 at 11:46:56AM +0200, 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)
BUFSIZE oder BUFF_SIZE? Eines von beiden .... Ciao, Marcus
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
participants (3)
-
Andreas Gaupmann
-
Benjamin Rogge
-
Marcus Meissner