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"};