专栏首页C语言及其他语言C语言中EOF是什么意思?

C语言中EOF是什么意思?

相信很多朋友在学习C语言过程中,都看到过EOF的字样,但翻过整本C语言的书,也没有看到有这个函数或者关键字的,岂不是感觉很奇怪?难道学的不细有疏漏吗?当然不是!这里笔者告诉您一个技巧,如果您在看代码过程中,看到特殊的字符感觉不是关键字也不是函数,那您首先要想到的就是:这个东西是不是#define或者typedef过的呢?

直接开门见山,比如ACM比赛经常有这样的代码:while(scanf("%d%d")!=EOF)

这玩意啥意思呢?首先scanf你写while里就很奇怪了,初学者表示没见过这么嵌套写的,再加个EOF更离谱了,都让人怀疑这是不是C代码了......

那给大家讲一下,首先这个代码scanf能写while里是因为scanf("%d%d")!=EOF本身是个逻辑判断,也就是真或者假,所以可以作为条件判断写到while里,那么最主要的问题来了,EOF到底啥玩意?

好了,如果您学了C语言中的宏定义就一切真相大白了,您不妨打开我们最常用的stdio.h这个头文件(不知道怎么打开?随便打开一个包含这个头文件的程序,右键即可),然后搜索EOF即可发现答案! 如下:

怎么样?看到了吧,EOF其实就是-1!

也就是说EOF就是个数字,被定义为-1而已!

为什么这样做呢? stdio.h作为一个标准输入输出的头文件,自然会定义很多标准的东西,那么EOF正是因此而生,且听笔者慢慢道来:

在我们进行包括scanf等的输入函数使用时,其实用户在cmd中的输入实际是存放于缓冲区当中,当用户键入回车那一瞬间,之前输入的数据才会被存进去,而这里无论是单个字符还是字符串,我们都知道scanf的返回值呢是表示成功接受到的对象的个数,那这里如果遇到特殊情况,比如缓冲区文件流满等问题,那么scanf将如何处理呢?答案是返回-1 ! 这里不光是scanf,返回值为个数的函数,遇到文件流满大多都会返回-1,所以这个-1用的比较多,那么stdio.h就索性专门定义一个宏来表示,取End Of File(文件末尾的意思)的前三个字母即组成EOF,所以也就有了 #define EOF (-1) 这样的话!

那么,现在看懂了吗?

C语言(clang.cc)研究中心

本文分享自微信公众号 - 编程范(dotcpp),作者:clang.cc

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-05-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【编程经验】C语言中EOF是什么意思

    C语言中EOF的意思 今天跟大家说道说道这个C语言中EOF是什么意思。 相信很多朋友在学习C语言过程中,都看到过EOF的字样,但翻过整本C语...

    编程范 源代码公司
  • 【每日一题】[蓝桥杯][算法提高VIP]任意年月日历输出

    这是一个蓝桥杯的真题哈,大家可以试试锻炼锻炼: 题目描述 已知2007年1月1日为星期一。 设计一函数按照下述格式打印2007年以后(含)某年某月的日历,20...

    编程范 源代码公司
  • 趣味web网页大集结

    身边学web和php的有些少啊.....【难受】 但是web网页确实能带来别样的欢乐.... 今天给大家带来几个有趣的网页 经典蓝屏界面 ? 现在你讨厌的蓝屏...

    编程范 源代码公司
  • OJ刷题-while(scanf("%d",&n)!=EOF)

            “测试输入包含若干测试实例。当N为0时,输入结束,该实例不被处理。”这句话 是最早我对OJ的印象 以前也没见过这种输入要求, 做第一道题的时候就...

    Flaneur
  • Andrew Ng机器学习课程笔记(三)之正则化

    http://www.cnblogs.com/fydeblog/p/7365475.html

    努力努力再努力F
  • 【编程经验】C语言中EOF是什么意思

    C语言中EOF的意思 今天跟大家说道说道这个C语言中EOF是什么意思。 相信很多朋友在学习C语言过程中,都看到过EOF的字样,但翻过整本C语...

    编程范 源代码公司
  • 【机器学习笔记】:解读正则化,LASSO回归,岭回归

    在机器学习的学习过程中,我们会经常听到正则化这个词,在开始入门学习的时候还经常与标准化混淆。到底什么是正则化呢?本篇我们将由浅入深详细解读什么是正则化,以及LA...

    用户2769421
  • 联想凌拓“开门红”,揭示中国用户最大“痛点”

    马云说过:企业价值大小决定于解决“痛点”的能力,解决的问题越重要,企业的价值越大。不要去争当“首富”,而是要争当“首负”,必须对用户、对社会负责。一句话,企业的...

    用户5498443
  • 前端基础-jQuery事件机制

    cwl_java
  • DDD理论学习系列(9)-- 领域事件

    1. 引言 A domain event is a full-fledged part of the domain model, a representati...

    圣杰

扫码关注云+社区

领取腾讯云代金券