在 fwrite() 上循环 fread() 与单独使用它们有什么区别?

问题描述

(注意:向半小时前阅读我上一篇文章的任何人道歉 - 我意识到我发布了错误的一半代码,实际上是后半部分给我带来了问题。所以,如果这篇文章似乎很熟悉,可能是!)

我正在尝试制作一个复制 .wav 文件的基本程序,这是我的尝试:

#include <stdio.h>
#include <stdint.h>

int main (void)
{
    FILE* input = fopen("input.wav","r");
    FILE* output = fopen("output.wav","w");
    
    uint8_t header [44];
    
    fread(header,sizeof(uint8_t),44,input);
    fwrite(header,output);
    
    int16_t body;
    
    fread(&body,sizeof(int16_t),1,input);
    fwrite(&body,output);
    
    fclose(input);
    fclose(output);
}

然而,在未能使其工作后,我查找了如何去做,显然

fread(&body,input);
fwrite(&body,output);

应该

while (fread(&body,input))
{
    fwrite(&body,output);
}

为什么第一部分可以毫无问题地复制标题,而第二部分必须使用循环才能工作?在我看来,他们似乎在做同样的事情。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)