fread()的问题总是返回1

d d*_*d d 3 c embedded file fread windows-ce

我看过类似的问题,但我的情况有点不同.我确保以二进制模式打开文件并检查读取时是否发生错误.

文件内容:

message1, message2, 53467
Run Code Online (Sandbox Code Playgroud)

程序读取简单文件:

int bytesRead;
FILE* CSV;
CSV = fopen("\\Temp\\csv.txt", "rb");
char dataBuf[128];

while ( (bytesRead = fread(dataBuf, 1, sizeof(dataBuf), CSV) > 0) )
{
        if (ferror(CSV))
            //handle error

        //do stuff with dataBuf contents
}
Run Code Online (Sandbox Code Playgroud)

fread()总是返回1.还没有输入ferror,所以没有文件读取错误.但是,char数组dataBuf填充了文件中的整个消息.我正在使用fread与另一个函数一起使用,所以我需要知道使用fread()读取了多少字节.有任何想法吗?

Gan*_*har 6

优先权很重要.

在赋值周围添加括号.

while  (  (  bytesRead = fread(dataBuf, 1, sizeof(dataBuf), CSV)  )  > 0  )   
          ^                                                       ^
Run Code Online (Sandbox Code Playgroud)

请参阅C_Operator_Precedence_Table

如果您看到1.5.1 File Copying部分,The C programming Language By Brian W. Kernighan and Dennis M. Ritchie您将获得有关此的明确说明.

  • 没有什么比学习函数的细节和阅读内部工作原理的详细段落细分更简单了,这是一个简单的被忽视的优先级...感谢Gangadhar (2认同)