C语言中EOF的意义与用法

这篇具有很好参考价值的文章主要介绍了C语言中EOF的意义与用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  EOF,为End Of File的缩写,通常在文本的最后存在此字符表示资料结束。
  在微软的DOS和Windows中,读取数据时终端不会产生EOF。此时,应用程序知道数据源是一个终端(或者其它“字符设备”),并将一个已知的保留的字符或序列解释为文件结束的指明;最普遍地说,它是ASCII码中的替换字符(Control-Z,代码26)。
  在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。
  档案存取或其它 I/O 功能可能传回等于象征符号值 (巨集) EOF 指示档案结束的情形发生。实际上 EOF 的值通常为 -1,但它依系统有所不同。巨集 EOF会在编译原始码前展开实际值给预处理器。
C语言中,EOF常被作为文件结束的标志。还有很多文件处理函数处错误后的返回值也是EOF,因此常被用来判断调用一个函数是否成功。
eg:

 1 LinkList LinkListCreatH(){
 2    // Node *L = (Node *)malloc(sizeof(Node));
 3    // L->next=NULL;
 4     Node *L=listinit();
 5     int x;
 6     while(scanf("%d",&x)!=EOF){
 7         Node *P=listinit();
 8         P->data = x;
 9         P->next = L->next;
10         L->next = P;
11    }
12    return L;
13 }

当上面的程序运行时,如果不加" != EOF",那么这个程序就是个死循环,会一直运行下去;

加上" != EOF"后该程序就不是死循环了,如果在终端不进行输入该程序会自动结束(while的意思就是说当当前输入缓存还有东西时就一直读取,直到输入缓存中的内容为空时停止)。

在这"scanf("%d",&n) != EOF"相当于"scanf("%d",&n) != EOF",或"~scanf("%d",&n)",或"scanf("%d",&n) == 1 " 。

要注意的是:在终端(黑框)中手动输入时,系统并不知道什么时候到达了所谓的“文件末尾”,因此需要用<Ctrl + z>组合键然后按 Enter 键的方式来告诉系统已经到了EOF,这样系统才会结束while.文章来源地址https://www.toymoban.com/news/detail-620305.html

到了这里,关于C语言中EOF的意义与用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言】EOF搭配while循环来控制scanf输入的次数

    目录 EOF是什么? EOF搭配while的实际应用场景1 EOF搭配while的实际应用场景2 补充 后言 EOF , 在C语言的标准函数库中表示 文件结束符 (end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。 在文本文件中,数据都是以字符的ASC

    2024年02月10日
    浏览(36)
  • 如何理解Go言中的Context?

    目前看过除了《go语言程序设计》以外最好的教程:https://www.practical-go-lessons.com 原文:https://www.practical-go-lessons.com/chap-37-context 你将在本章中学到什么? 1.什么是上下文? 2.什么是链表? 3.如何使用上下文包? 涵盖的技术概念 Context derivation Linked list Context key-value pair Cancella

    2024年02月08日
    浏览(42)
  • 编写一个指令(v-focus2end)使输入框文本在聚焦时焦点在文本最后一个位置

    项目反馈输入框内容比较多时候,让鼠标光标在最后一个位置,心想什么奇葩需求,后面试了一下,是有点影响体验,于是就有了下面的效果,我目前的项目都是若依的架子,用的是vue2版本。vue3的朋友想要使用,自行调节 效果图如下: 使用方法: 前提是指令被注册,代码

    2024年02月13日
    浏览(36)
  • C++中 system(pause);的用法与意义

    在C++中, system(\\\"pause\\\") 是一个常见的用法,通常用于在命令行窗口中暂停程序的执行,等待用户按下任意键继续。这行代码的主要目的是在程序执行完毕后保持命令行窗口打开,以便用户能够查看程序的输出结果或任何错误消息,而不会立即关闭窗口。 system(\\\"pause\\\") 的工作原理

    2024年02月03日
    浏览(36)
  • chatgpt赋能python:Python定义父类的意义及用法

    Python是一种高级编程语言,具有强大的面向对象编程(OOP)能力。在OOP的设计中,定义一个父类可以让多个子类继承其属性和方法,从而提高代码重用率并简化程序的开发。 在Python中,我们可以通过定义一个类来创建一个父类。具体的代码如下: 在以上示例中,我们定义了

    2024年02月08日
    浏览(43)
  • c++中set_difference这个函数的意义和用法

    今天正好碰到了这个函数,虽然大概可以猜出这个函数的作用,但是仍然期待一个通俗易懂的解释,网上搜索了一下,搜到百度百科,感觉没有抓住重点,虽然示例也勉强可以理解,但是总感觉讲究不够直观。 下图绿色部分就是这个函数的功能了。   于是,最终在Notion的帮

    2024年02月01日
    浏览(55)
  • 【更新】vue使用 wangeditor4 富文本 + 富文本回显带标签+wangEditor4 加字数,光标会跑到最后 问题 (已解决)

    背景:业务需求,要实现一个富文本框,好方便用户插入图片 问题:百度了一整天,看了n多文章包括官方文档,又花了半天时间实现需求,对于小白来说,真的是大难题,又着急,又害怕,结果就是,越急越搞不定……此处省略我的吐槽 来吧,上步骤: 我这里装的是版本

    2023年04月19日
    浏览(37)
  • 超详解 - 如何理解C语言中while(scanf(“%d“, &num) != EOF)这一表达式?

    许多C语言初学者常常对scanf函数、表达式scanf(\\\"%d\\\", num) != EOF的含义与其使用情况有些疑惑。 本文通过一道牛客网例题,对该表达式进行说明和适当拓展;不需要引例的朋友可以直接跳转到讲解部分。 希望对诸位读者有所帮助。 目录 一、引例 - 牛客网OJ题 二、EOF 与 scanf 函数

    2024年02月08日
    浏览(40)
  • 文本生成图像工作简述3--技术难点、研究意义、应用领域和目前的局限性

    文本生成图像 (text-to-image)指的是使用人工智能技术将文本转换为图像的过程,其可以根据给定文本生成符合描述的真实图像,其是多模态机器学习的任务之一,具有巨大的应用潜力,如 视觉推理 、 图像编辑 、 视频游戏 、 动画制作 和 计算机辅助设计 。 本篇将简述文本

    2024年02月04日
    浏览(69)
  • ue4 unreal Instanced Static Mesh Component 实例化静态网格体组件 的用法及意义

    注意这是个组件  ​​  这个组件的意义 本来在建模软件里面就有这个功能 用来应对大量,同样网格,同样材质,不同几何信息(位置 旋转 缩放)的网格 比如场景里面的垃圾桶 电线杆 路灯等几百上千的东西  我试过一两万挺轻松的... 比较骚的操作是可以更新几何信息,

    2024年02月09日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包