月换新天。为有牺牲多壮志,敢教日

[C]C语言中EOF是什么意思?

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(www.zengqiang.org
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/11418035.html 
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

热烈欢迎,请直接点击!!!

进入博主App Store主页,下载使用各个作品!!!

注:博主将坚持每月上线一个新app!!!

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

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

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

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

C语言中EOF是什么意思?

C语言中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) 这样的话!

posted @   为敢技术  阅读(891)  评论(0编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示
哥伦布
13:14发布
哥伦布
13:14发布
3°
西南风
2级
空气质量
相对湿度
95%
今天
中雨
3°/13°
周三
大雨
1°/13°
周四
中雨
3°/8°