feof(feof msdn)

feof用于判断文件结尾。头文件<cstdio>。使用方法是feof(fp),fp为指向需要判断的文件的指针。如果不到文件结尾,返回0值;如果是文件结尾,返回非0.

使用feof判断文件结尾一定要非常注意以下一点:

假设文件包含10字节,并且你读取了十字节,调用feof函数,函数返回值均为0,这是因为尽管文件指针这时已经指向文件尾了,但是你没有试图越过文件尾读取数据,只有当你尝试了读取第十一个字节时,调用feof,函数才会返回0.

因此,使用feof常用的逻辑结构是先读在判断,如果先判断在读取,就会发生异常。

EOF(EOF c++ reference)

c++ reference对其的讲解是:

“EOF是一个整数类型的宏定义,扩展为负数常量表达式(通常为-1)。

它被头文件<cstdio>中的好几个函数作为返回值使用,来表明已经到达文件尾或者示意一些其他的错误条件

它也被作为一个值来表示无效的字符。

在C++中,这个宏定义为char_traits<char>::eof().”

feof与EOF异同

具体参看feof与EOF的用法

EOF通常用来判断文本文件的结尾,因为EOF的值为-1,ASCII都是字符型,不可能出现-1的情况。而在二进制文件中,信息以数值存放,使用EOF就可能会异常。

因此,通常使用feof来判断二进制文件的结尾。

理解feof与EOF的更多相关文章

  1. feof()和EOF的用法(转载)

    查看 stdio.h 可以看到如下定义: #define  EOF  (-1) #define  _IOEOF  0x0010 #define  feof(_stream)  ((_stream)-& ...

  2. EOF \n \0 NULL 之间的区别

    \n 是换行符 \0 是字符串的结束标志 EOF是流的结束标志 FILE* 这种流 NULL 是指针为空 第一个问题是EOF  它是end of file的缩写,表示"文字流"(s ...

  3. mfc 调用Windows的API函数实现同步异步串口通信(源码)

    在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信.串口通信方便易行,应用广泛. 一般情况下,工控机和各智能仪表通过RS485总线进行通信.RS485的通信方式是半 ...

  4. Win32串口API

    在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信.串口通信方便易行,应用广泛. 一般情况下,工控机和各智能仪表通过RS485总线进行通信.RS485的通信方式是半 ...

  5. Windows API串口编程详解

    (一)Windows API串口通信编程概述 Windows环境下的串口编程与DOS环境下的串口编程有很大不同.Windows环境下的编程的最大特征之一就是设备无关性,它通过设备驱动程序将Window ...

  6. php socket 编程读写函数

    fwrite() 二进制安全 end条件[string写完/length-1]; fputs() fwrite()的别名; fread() 二进制安全,end条件[一个可用包/EOF/length-1 ...

  7. VC 串口通讯基本原理,讲的很是详细

    目 录打开串口............................................................................................. ...

  8. 【C标准库】详解feof函数与EOF

    创作不易,多多支持! 再说此函数之前,先来说一下EOF是什么 EOF,为End Of File的缩写,通常在文本的最后存在此字符表示资料结束. 在C语言中,或更精确地说成C标准函式库中表示文件结束符. ...

  9. C语言之EOF和feof()

    EOF用于判断所操作的文件是否已经读到文件结束,是在stdio.h文件中定义的符号常量,值为-1. 即当系统读取到文件结尾,所返回的一个信号值(也就是-1). EOF不是可输出字符,因此不能在屏幕上输 ...

随机推荐

  1. shell脚本上传sftp文件

    转至:https://blog.csdn.net/sxh6365966/article/details/83385711 #!/bin/bash #SFTP配置信息 #用户名 YEARS=`date ...

  2. oj教程--深度优先DFS

    深度优先搜索算法(英语:Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法.

  3. matplotlib.lines.Line2D at 0x328fc10 解决方法

    在plt.plot(Y,X)代码前加一句plt.figure()即可

  4. UnicodeDecodeError

    'gbk' codec can't decode byte 0x80 in position xx open文件时,添加参数'encoding='utf-8' 'utf-8' codec can't ...

  5. LeetCode-020-有效的括号

    有效的括号 题目描述:给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺 ...

  6. kube-scheduler源码分析(3)-抢占调度分析

    kube-scheduler源码分析(3)-抢占调度分析 kube-scheduler简介 kube-scheduler组件是kubernetes中的核心组件之一,主要负责pod资源对象的调度工作,具 ...

  7. laravel resource风格

    resource 风格 概念 一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存 ...

  8. 学习Java集合

    1.列表  List接口(继承于Collection接口)及其实现类 List接口及其实现类是容量可变的列表,可按索引访问集合中的元素. 特点:集合中的元素有序.可重复: 列表在数据结构中分别表现为: ...

  9. Netty学习(四)FastThreadLocal

    FastThreadLocal 前面介绍过 JDK 的 ThreadLocal , 使用不当的话容易造成内存泄漏最终导致OOM, 并且也有一些地方设计的不够好(相对于接下来要介绍的 FastThrea ...

  10. Create Table 实例

    1 USE databaseWeb; 2 DROP TABLE IF EXISTS tb_person; 3 CREATE TABLE tb_person( 4 id INTEGER AUTO_INC ...