质疑fread()的块方式读取

size_t fread( void *buffer, size_t itemsize, size_t count, FILE *stream );

以前调用fread()总是用字符方式, 即itemsize = 1.

现在偶尔应用了一下块方式, 将 itemsize 设为一个结构的大小, 而 count = 1.

正常情况下是没问题.

如果文件大小不足一个结构, 返回应该是0. 可是文件增长后, 以后读取的所有结构都错了!

因为第一次读取后文件指针就不在结构的边界上了.

看来还是要用字符方式读取.


阅读更多
文章标签: stream buffer file
个人分类: C/C++
上一篇闭着眼睛也能debug, 高, 实在是高!
下一篇有感程序员的自驱力
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭