为fread()
的语法是
size_t fread(void *ptr, size_t size, size_t nmemb, FILE * stream);
这意味着,
功能fread()
读取数据的nmemb
元素,每个size
字节长,从流通过stream
指出,存储他们在ptr
给出的位置。
因此,读取的总字节数将是nmemb * size
。
现在,说
成功
,FREAD()和fwrite()返回的项目数读取或写入。这个数目等于仅传输的字节数时大小为1
这意味着,返回值将等于nmemb
当size
是1.
Logic是一样的,在fwrite()
也如此。
编辑
例如,一个完全成功调用fread()
像
fread(readbuf, sizeof(int), 5 , stdin);
将返回5
,同时它会读取sizeof(int) * 5
字节。如果我们假设sizeof(int)
是4
,那么读取的总字节数将是5 * 4
或20
。正如你所看到的,在这里,读取或写入的项目数是不等于到转移的字节数。
OTOH,另一个完全成功调用fread()
像
fread(readbuf, sizeof(char), 5 , stdin);
也将返回5
,同时它会读取sizeof(char) * 5
个字节,即5
字节。在这种情况下,由于sizeof(char)
是1
,所以在这里读取或写入的项目数是等于到转换的字节数。即,5
。
'FREAD()''读取N * K'字节,其中'N'是每个元素中的字节数,总共将读取“K”个元素。理想情况下,如果没有错误发生,将返回“K”。如果出现错误或文件结束条件,则可能会读取少于'K'个元素,在这种情况下,将返回小于'K'的数字。 – 2015-02-08 19:24:52
相关:http://stackoverflow.com/q/8589425/827263 – 2015-02-08 20:30:00