C/C++ 读取文件 问题

C/C++ 读取文件 问题

C/C++ 读取文件 问题

1.peek()说明

  1. 判断文件是否为时使用peek函数,若peek返回EOF则文件为空。例如:while(ifstream.peek() != EOF)
  2. 读取文件过程中,读取非char型时,使用peek()判断文件尾将不再适用,循环判断条件应**改用>>**操作符进行读取,若读入char型缓冲 区,peek()函数会表现得很好。
  3. peek()返回输入流文件的下一个字符,但它不移动内置指针。

2. feof()说明

解释1:feof()并不是返回当前的位置在不在文本末尾,而是返回当前位置后方还有没有内容。而在文本末尾系统会添加一个EOF标志来表示文本结束,所以当到EOF前时,明明应该停止读取,但因为当前位置后方还有内容(EOF也算内容),所以feof()并不是马上返回非零值,而是下一次才返回非零值,这也就导致最后一次的结果会被打印两次。

总结:

  1. 不能用feof()判断文本文件读取是否达到文本末尾,用fread或fgets代替。
  2. 二进制文件不能用EOF来判断是否到文件末尾,因为即使不在末尾也可能出现EOF的值(不同系统下EOF的值有别),只适用于文本文件。
  3. fread()对二进制文件和文本文件均适用
  4. 文本读写模式要记清。w+表示以文本模式打开文件(没有会创建),可以读出也可以写入。但是重复打开原有内容会被清空。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值