我看过类似的问题,但我的情况有点不同。我确保以二进制模式打开文件并检查读取时是否发生错误。
文件内容:
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()读取了多少字节。有什么想法吗?
答案 0 :(得分:6)
优先权很重要。
在作业周围添加括号。
while ( ( bytesRead = fread(dataBuf, 1, sizeof(dataBuf), CSV) ) > 0 )
^ ^
请参阅C_Operator_Precedence_Table
如果您看到1.5.1 File Copying
的{{1}}部分,您将会对此有明确的解释。