Ich lese eine WAV-Datei als Binärdatei, lege sie in einen Puffer und möchte die exakt gleiche WAV-Datei erneut schreiben.C - Schreiben eines Puffers als Binärdatei (wav)
Hier ist mein Code so weit:
file = fopen("tone1.wav", "rb");
file3 = fopen("outout.wav","wb");
fseek(file, 0, SEEK_END);
fileLen=ftell(file);
fseek(file, 0, SEEK_SET);
buffer=(char *)malloc(fileLen+1);
buffer3=(char *)malloc(fileLen+1);
fread(buffer, fileLen, 1, file);
for (int i=0;i<fileLen+1;++i){
buffer3[i]=buffer[i];
fwrite(buffer3,sizeof(buffer3),1,file3);
}
fclose(file);
fclose(file3);
free(buffer);
free(buffer3);
Das Problem ist, dass die outout WAV-Datei leer und unspielbar kommt. Ich bin mir nicht sicher, was ich falsch mache. Wenn ich fwrite(buffer3,sizeof(buffer3),1,file3);
durch fwrite(buffer3,sizeof(buffer3),1048,file3);
(sagen wir 1048) ersetze, bekomme ich etwas spielbares aber nicht das gesamte wav mit einer Schleife darin.
Kann mir jemand sagen, was ist das Problem? Vielleicht ist es die Länge der for-Schleife, die falsch ist, vielleicht sollte ich fileLen nicht als Grenze dafür setzen? Womit soll ich 1 ersetzen?
Vielen Dank im Voraus
'sizeof (buffer3)' - nicht tun, was Sie denken, dass es ist; das ist die Größe eines * Zeigers *. Und ich bin mir nicht wirklich sicher, ob du das "fwrite" in der Schleife haben willst. – WhozCraig
du hast Recht ich ersetzte es durch sizeof (char) aber immer noch das gleiche (da meine Puffer auf Zeichen zeigen) –