2016-08-02 30 views
2

Ich versuche, eine Datei in einer neuen Datei zu kopieren, aber es funktioniert nicht, da die Eingabe 5133 KB ist und die Ausgabe 614byte ... was ist los? Vielen Dank im Voraus.Kopieren Sie eine Datei in C

#include <stdio.h> 

int main(void) 
{ 

    FILE * input = fopen("input.wav", "r"); 
    FILE * output = fopen("output.wav", "w"); 

    char buffer; 
    int  bytesRead = 1; 

    while(bytesRead=fread(&buffer,1,1,input)) 
    { 
     fwrite(&buffer,1,1,output); 
    } 

    fclose(input); 
    fclose(output); 

    return 0; 
} 
+1

* Neben *: Ihr Programm wird unangenehm langsam gehen, wenn Sie nicht die Größe Ihres Puffers erhöhen. –

+1

Ja, ich kann mir nicht vorstellen, warum Sie EIN BYTE AUF EINMAL lesen sollten. –

+0

Der Grund war, dass ich das einfachste Programm schreiben wollte, um mein Problem besser zu zeigen. – thebesttony

Antwort

4

Möglicherweise müssen Sie die Datei in Binärmodus auf Ihrem System öffnen. Von C.2011, § 7.21.5.3:

rb offene Binärdatei zum Lesen
wb truncate auf die Länge Null oder erstellen binäre Datei zum Schreiben

So:

FILE * input = fopen("input.wav", "rb"); 
FILE * output = fopen("output.wav", "wb"); 

Der Grund ist, dass auf einigen Systemen bestimmte einbetten ded-Binärzeichen können dazu führen, dass die Verarbeitung im Textmodus das Ende der Datei erwartet, obwohl tatsächlich mehr Bytes in der Datei vorhanden sind.