Speicherzugriffsfehler



  • Hallo!

    Bei meinen kleinen CD-Sicherungs-Progrämmchen bekomme ich gleich nach dem Start einen Speicherzugrigffsfehler.

    #include <stdio.h>
    #include <sys/types.h>
    
    #define BUF (1024*2)
    
    int main (int argc, char **argv)
    {
      const char **files;
      FILE **descriptors;
      char buffer[BUF];
      int bytes_read;
    
      descriptors = (FILE **) malloc (2 * sizeof (descriptors[0]));
    
      files[0] = "/dev/hdc";
      files[1] = "~/cd.iso";
    
      descriptors[0] = fopen (files[0], "r");
      descriptors[1] = fopen (files[1], "w");
    
      while (bytes_read > 0)
        {
          bytes_read = fread (buffer, BUF, 1, descriptors[0]);
          fwrite (buffer, bytes_read, 1, descriptors[1]);
        }
    
      fclose (descriptors[0]);
      fclose(descriptors[1]);
      free (descriptors);
    
      return 0;
    }
    

    Wo ist der fehler?



  • Vor

    files[0] = "/dev/hdc";
    

    Musst du noch Speicher allokieren:

    files =  (const char **) malloc(2*sizeof(const char *));
    


  • Und mach das const weg, sonst kannst du den Inhalt nicht ändern!

    Und noch was, C kennt sowas wie fopen("~/cd.iso") ist nicht! Du musst getenv("HOME") benutzen.

    Oder du kannst benutzen

    const char *file[] = {"/dev/hdc", "~/cd.iso"};
    

Anmelden zum Antworten