1

我正在尝试从文件中一次读取一个字节:

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很好。

谢谢

4

4 回答 4

2

根据文档:

fread() 和 fwrite() 返回成功读取或写入的项目数(即,不是字符数)。如果发生错误或到达文件结尾,则返回值是一个短项目计数(或零)。

那么为什么不检查可以回答您问题的错误代码呢?例如,您可以使用perror

于 2011-01-28T16:46:11.087 回答
1

如果您只需要一个字节,getc那将是比fread. 界面更简单,并且可能会更快。

于 2011-01-28T17:24:00.497 回答
0

http://www.cplusplus.com/reference/clibrary/cstdio/fread/有一个从文件读取的例子。这是一个 c++ 页面,但应该适用于 c

于 2011-01-28T16:50:29.067 回答
0

fread使用时请记住,fwrite在某些情况下打开文件进行正常文本写入时可能会出现奇怪的错误。打开二进制文件将消除这个潜在的问题。这主要是由于“新行”,由于某种原因,二进制文件和文本文件的读写似乎有所不同。

于 2011-01-29T01:22:29.633 回答