我试图将文件复制到一个新文件中,但它不起作用,因为输入是5133KB,输出是614字节。。。怎么了?提前谢谢。
#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;
}
您可能需要在系统上以二进制模式打开文件。2011年6月,§7.21.5.3:
rb
打开二进制文件进行读取wb
截断为零长度或创建用于写入的二进制文件
因此:
FILE * input = fopen("input.wav", "rb");
FILE * output = fopen("output.wav", "wb");
原因是在某些系统上,某些嵌入的二进制字符可能会导致文本模式处理认为遇到了文件末尾,即使文件中实际上有更多的字节。