我已经看到了两种向fread
提供文件大小的方法。
如果我说我有一个char数组data
,file
指针和filesize
是文件的大小(以字节为单位),那么第一个是:
fread(data, 1, filesize, file);
第二个:
fread(data, filesize, 1, file);
我的问题是,这两行代码之间有什么区别吗? 以及哪行代码更“正确”。
另外,我假设两行代码中的1
实际上意味着sizeof(char)
,这是正确的吗?
答案 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'标准,第一行是正确的。