我试图从文件中一次读取一个字节:
size_t result_new = 1;
char buf6[1];
if( (result_new = fread(buf6, 1, 1, pFile)) != 1)
{
printf("result_new = %d\n", result_new);
printf("Error reading file\n");
exit(1);
}
result_new
变为0并且正在打印错误。什么可能是错的。我确定pFile
没问题。
感谢
答案 0 :(得分:2)
根据文件:
fread()和fwrite()返回 成功阅读的项目数量或 书面的(即,不是 字符)。如果发生错误,或 到达文件的末尾, 返回值是短项目计数(或零)。
那你为什么不检查能回答你问题的错误代码呢?例如,您可以使用perror
。
答案 1 :(得分:1)
如果您只需要一个字节,getc
将是比fread
更好的选择。界面更简单,而且速度可能更快。
答案 2 :(得分:0)
http://www.cplusplus.com/reference/clibrary/cstdio/fread/有一个从文件中读取的示例。它是一个c ++页面,但应该适用于c
答案 3 :(得分:0)
使用fread
和fwrite
时请记住,在打开正常文本文件的某些情况下,可能会发生奇怪的错误。打开二进制文件将消除这个潜在的问题。这主要是由于“新行”,出于某种原因,二进制和文本文件的读写似乎有所不同。