3

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

文件内容:

message1, message2, 53467

读取简单文件的程序:

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
}

fread() 总是返回 1。 ferror 也没有输入,所以没有文件读取错误。但是,char 数组 dataBuf 填充了来自文件的整个消息。我将 fread 与另一个函数结合使用,因此我需要知道使用 fread() 读取了多少字节。有任何想法吗?

4

1 回答 1

6

优先级很重要。

在分配周围添加括号。

while  (  (  bytesRead = fread(dataBuf, 1, sizeof(dataBuf), CSV)  )  > 0  )   
          ^                                                       ^

C_Operator_Precedence_Table

如果你看到你会得到清楚的解释这1.5.1 File Copying部分。The C programming Language By Brian W. Kernighan and Dennis M. Ritchie

于 2013-10-09T16:51:15.023 回答