[C]C语言中EOF是什么意思?
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(www.zengqiang.org)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/11418035.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
直接开门见山,比如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) 这样的话!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库