为什么fread()
不起作用,fwrite()
有效?
如果我从评论中获得fwrite()
而评论中获得fread()
,则输出文件的大小为0 bytes
...但如果fwrite()
没有评论,则输出文件大小为64 bytes
..
怎么回事?
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *input = fopen( "01.wav", "rb");
if(input == NULL)
{
printf("Unable to open wave file (input)\n");
exit(EXIT_FAILURE);
}
FILE *output = fopen( "01_out.wav", "wb");
//fread(output, sizeof(char), 64, input);
fwrite(input, sizeof(char), 64, output);
fclose(input);
fclose(output);
return 0;
}
答案 0 :(得分:3)
您应该从输入文件中读取并写入输出文件。
char buf[64];
fread(buf, 1, sizeof(buf), input);
fwrite(buf, 1, sizeof(buf), output);
您的代码应检查fread
和fwrite
的错误返回值。
答案 1 :(得分:1)
fread(output, sizeof(char), 64, input);
此行将从输入文件中读取64个字节,并将这64个字节存储在output
指向的内存中。它不会向输出文件写入任何内容。由于output
是一个文件指针而不是指向数组的指针,因此使用它是没有意义的。
fwrite(input, sizeof(char), 64, output);
该行将从input
指向的内存中读取64个字节,并将其写入输出文件。它不会从输入文件中读取任何内容。同样,由于input
指向的内存只包含FILE
对象而不包含输入文件的内容,因此无法执行您想要的操作。