2016-05-07 10 views
-1

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

} 
+0

Warum nicht einfach 'cp file1 file2' verwenden? –

+1

Was ist, wenn es sich um eine 800GB-Datei handelt? Es ist vielleicht keine gute Idee, das ganze Ding in den Speicher zu schreiben ... –

+0

Wie nennt man diese Routine? – usr2564301

Antwort

3

Eine Randbemerkung, bevor die dstFile zum Schreiben Sie Wiederaufnahme sollte die vorherige Descriptor schließen.

Wie auch immer, Sie angerufen fseek(srcFile, 0, SEEK_END);, aber Sie nicht zurück zum Anfang suchen, also, wenn Sie versuchen, Sie zu lesen Hit EOF. Ich denke, das ist die Wurzel Ihres Problems, wenn nicht (oder nach der Reparatur funktioniert es immer noch nicht), dann geben Sie bitte mehr Details, wie es nicht funktioniert.

Verwandte Themen