sigsegv mit fopen
-
Hallo,
ich habe ein Programm, dass sich beim Aufruf von fopen immer mit einem Speicherzugriffsfehler beendet. Ich kann leider den Fehler nicht finden.#include <stdlib.h> #include <stdio.h> #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.
-
BUFF_SIZE und BUFSIZE sind nicht das gleiche
-
Wenn du fgets zum Einlesen eines Dateinamens verwenden willst dann wirst du das abschliesende '\n' irgendwie loswerden müssen. Sonst wird fopen scheitern.
Etwa so.fputs("Enter filename: ",stdout); if(fgets(buffer,BUFSIZE-1,stdin)==NULL) { perror("fgets"); return -1; } if (( p = strchr( buffer, '\n')) != 0 ) *p=0;
Kurt