我正在使用VC ++函数
ReadFile(FileHandle,charBuf,noOfBytesToRead,&noOfBytesRead,NULL);
在for循环中;在foor循环的每次迭代中,FileHandle在文件中向前移动,即在每次迭代中,我们正在读取文件的特定单元,并将文件中的数据单元(文件中的数据束)复制到char *
数组。
每次迭代中要读取的数据量(从文件到char *
数组)由“noOfBytesToRead”确定。
对于某些no:迭代,ReadFile()工作正常,但我观察到,对于某些“n”次迭代(在读取nTH数据束时)第4个参数( noOfBytesRead )即使ReadFile()返回1,上面的调用也设置为0。
ReadFile()的返回值为1,表示成功&第4个参数“noOfBytesRead”设置为0,而不是no:of bytes Read。这是矛盾的!为什么会这样?
任何人都可以帮助我。 ReadFile()是一个Win API我甚至无法进入代码进一步调试。
答案 0 :(得分:4)
来自MSDN:
如果返回值非零并且读取的字节数为零,则在读取操作时文件指针超出了文件的当前末尾。
答案 1 :(得分:2)
当同步读取操作到达文件末尾时,ReadFile返回TRUE并将* lpNumberOfBytesRead设置为零。