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


Anmelden zum Antworten