FILE* an funktion übergeben
-
Hallo,
ich habe ein Problem, wenn ich ein *FILE an eine Funktion übergebe. Ich habe eine Funktion für das binäre kopieren einer Datei geschrieben. Das seltsame ist, dass sie funktioniert, wenn ich ihr zwei Zeichenketten übergebe und dann in der Funktion die Dateien öffne.
Wenn ich der Funktion aber stattdessen die Filepointer zweier geöffneter Dateien übergebe, gibt es bei fwrite eine "unhandled exeption".
Ich weiss nicht wo der Fehler liegen könnte, und hoffe dass mir jemand helfen kann.Hier ist der Code der Funktion:
int binCopy(FILE* fp_Datei1, FILE* fp_Datei2) { unsigned char bytes; int numChars, i; //dateilänge fseek(fp_Datei1, 0, SEEK_END); numChars = ftell(fp_Datei1); fseek(fp_Datei1, 0, SEEK_SET); /////////Das eigentliche kopieren///////////// for (i=1;i<=numChars;i++) { cout << i << endl; fread( &bytes, sizeof(unsigned char), 1, fp_Datei1 ); fwrite( &bytes, sizeof(unsigned char), 1, fp_Datei2 );//Hier kommt der Fehler } }
-
Du solltest denke ich bevor du die Pointer in der Funktion verwendest
beide auf Gueltigkeit überprüfen ala siehe CODEAUSZUG:if(fp_Datei1 != NULL && fp_Datei2 != NULL) { //dateilänge fseek(fp_Datei1, 0, SEEK_END); numChars = ftell(fp_Datei1); fseek(fp_Datei1, 0, SEEK_SET); /////////Das eigentliche kopieren///////////// for (i=1;i<=numChars;i++) { cout << i << endl; fread( &bytes, sizeof(unsigned char), 1, fp_Datei1 ); fwrite( &bytes, sizeof(unsigned char), 1, fp_Datei2 );//Hier kommt der Fehler } } // ansonsten bitte nicht umkopieren
mfg sclearscreen
-
Vielen Dank!
Der Fehler lag tatsächlich nicht in der Funktion, sondern schon früher. Der fp_Datei2 war 0! Jetzt habe ich das aber behoben!