Ich versuche, eine Funktion zu machen, die 2 Dateien öffnet - eine zum Lesen und die andere zum Schreiben und kopiert dann die erste Datei in die andere Binärdatei und aus irgendeinem Grund ist es einfach funktioniert nicht. Ich habe versucht, das Programm ein paar Mal zu debuggen, aber ich konnte das Problem nicht erkennen.Kopiere Inhalt von IMG-Datei zu einer anderen IMG-Datei
void myCopyBinary(char * * argv) {
FILE * srcFile;
FILE * dstFile;
int yesNo = 0;
char temp = ' ';
int i = 0;
int size = 0;
char * buffer;
int resultFread = 0;
int resultFwrite = 0;
srcFile = fopen(argv[1], "rb");
if (srcFile != NULL) {
dstFile = fopen(argv[2], "rb");
if (dstFile != NULL) {
printf("Would you like to overwrite it? (Every Number -YES, 0-NO): ");
scanf("%d", & yesNo);
if (yesNo == 0) {
fclose(dstFile);
exit(0);
return 1;
}
}
dstFile = fopen(argv[2], "wb");
if (dstFile != NULL) {
fseek(srcFile, 0, SEEK_END); // non-portable
size = ftell(srcFile);
buffer = (char *) malloc(sizeof(char) * size);
if (buffer == NULL) {
printf("Error with the buffer!\n");
exit(1);
}
do {
resultFread = fread(buffer, 1, sizeof(buffer), srcFile);
resultFwrite = fwrite(buffer, 1, resultFread, dstFile);
} while (resultFread > 0);
}
}
Warum nicht einfach 'cp file1 file2' verwenden? –
Was ist, wenn es sich um eine 800GB-Datei handelt? Es ist vielleicht keine gute Idee, das ganze Ding in den Speicher zu schreiben ... –
Wie nennt man diese Routine? – usr2564301