C fread()始终返回1的问题
我看过类似的问题,但我的有点不同。我确保以二进制模式打开文件,并检查读取时是否发生错误 文件内容:C fread()始终返回1的问题,c,file,embedded,windows-ce,fread,C,File,Embedded,Windows Ce,Fread,我看过类似的问题,但我的有点不同。我确保以二进制模式打开文件,并检查读取时是否发生错误 文件内容: 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) ) {
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()读取了多少字节。有什么想法吗?优先权很重要
在赋值前后加括号
while ( ( bytesRead = fread(dataBuf, 1, sizeof(dataBuf), CSV) ) > 0 )
^ ^
看
如果您看到Brian W.Kernighan和Dennis M.Ritchie编写的C编程语言的
1.5.1文件复制
一节,您将对此得到清晰的解释。。。或者只需将结束括号从“0”后面直接移动到fread(…)
后面即可。双括号没有任何意义,没有什么比学习函数的内部和外部以及阅读函数内部工作的详细段落分解更重要的了,这是一个简单的忽略了的优先顺序。。。谢谢Gangadhar