如何正确使用fread?

时间:2015-07-14 09:44:46

标签: c fread

我已经看到了两种向fread提供文件大小的方法。

如果我说我有一个char数组datafile指针和filesize是文件的大小(以字节为单位),那么第一个是:

fread(data, 1, filesize, file);

第二个:

fread(data, filesize, 1, file);

我的问题是,这两行代码之间有什么区别吗? 以及哪行代码更“正确”。

另外,我假设两行代码中的1实际上意味着sizeof(char),这是正确的吗?

3 个答案:

答案 0 :(得分:3)

  

参数2 :每个成员的大小

     

参数3 :您想要阅读的对象数量

现在你的问题:

  

这两行代码有什么区别吗?

fread(data, 1, filesize, file);

读取数据指向的filesize个对象,其中每个对象的大小为1个字节。 如果读取的字节少于filesize,则会部分读取这些字节。

fread(data, filesize, 1, file);

读取数据指向的1对象,此对象的大小为filesize个字节。如果可用的字节少于filesize,则不会读取任何字节。

执行您的计划的任何要求。

答案 1 :(得分:0)

第一个告诉fread读取大小为1的元素,文件大小。

第二个告诉fread读取大小为1的filesize元素。

理论上两者都会产生相同的结果。

答案 2 :(得分:0)

在实践和理论中,两者都产生相同的结果。但是如果你尊重'fread'标准,第一行是正确的。