为什么使用fread()第二次它不是从头开始读文件而是从第一个fread()读取结束?

时间:2013-05-06 14:13:08

标签: c file binary-data fread

我想用hdr文件中的数据填充in.wav(struct)变量,我想将in.wav文件的前64个字节复制到另一个文件({{1 }})。

但是!当第二次使用out.wav时,它会在第一次使用fread()时从其完成的位置复制in.wav。为什么呢?

fread()

怎么回事?

2 个答案:

答案 0 :(得分:2)

这是有意的。 fread始终从文件的当前读指针读取并推进相同的指针,因此您可以在顺序块中创建文件而无需显式搜索。

您不必连续两次读取相同的块。您正在检查的方式是,其他进程是否在此期间更改了文件,如果有,则您的程序将错误地报告副本失败。

答案 1 :(得分:1)

移动文件指针。在此处阅读更多相关信息:Does fread move the file pointer?。您可以使用fseek或倒带来定位文件的开头。