有什么区别:
fread( buf, sizeof buf, 1, file ); // 'file' is valid open 'FILE *'
Run Code Online (Sandbox Code Playgroud)
和
fread( buf, 1, sizeof buf, file );
Run Code Online (Sandbox Code Playgroud)
参数2和3被size_t size, size_t nmemb
描述为"fread()读取nmemb数据项,每个字节长度为".我认为读取的最终字节数必须是size * nmemb
但由于某种原因,只有第二种语法(大小= 1)对我有效.
区别在于以下两点:
nmemb
).如果它们成功,这在你的两个陈述中是不同的.在第一种情况下:
fread( buf, sizeof(buf), 1, file )
Run Code Online (Sandbox Code Playgroud)
你会得到全部或全部; fread
无法读取小于sizeof(buf)
文件较小的内容.
在第二种情况:
fread( buf, 1, sizeof(buf), file );
Run Code Online (Sandbox Code Playgroud)
您允许fread
读取尽可能多的字节,即使sizeof(buf)
文件中的可用字节数少于可用字节.将返回实际读取的元素数(本例中为字节数).