fread 返回 0的情况

fread 的函数原型是(来自MSDN):

size_t fread( void *buffersize_t size,size_t count,FILE *stream);

 

我们用fread读的时候,有时会把size设置为整数,比如:300。然后我们可能用一个循环来读取文件的内容:

while ((iBytesRead = fread (buf, 300, 1, fin))> 0) {

// 具体代码略

}

若有一个文件,它的内容大约为213 bytes,那么,用这个语句来读的话,就会进不到循环里面去了,因为fread返回的是实际所读取的块数!那么一个块是300 bytes,而此文件全部内容加起来也才213 bytes,小于300 bytes。也就是说,读到的数据不足一块,那么只能返回0了,于是不会进入循环~~

 

所以,如果想fread返回读取的具体byte数的话,应该把size 和count 的位置对调,变成这样:

while ((iBytesRead = fread (buf, 1, 300, fin))> 0) {

// 具体代码略

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值