【C语言中的EOF】零基础看懂EOF如何使用while(scanf(“%d %d”,a,b)感叹号=EOF)

article/2025/6/19 19:16:37

🌟前言

如今我们努力奔跑,不过是为了追上那个曾经被寄予厚望的自己!
1
【👻👻👻大家好,我是姜姜爱柚子,将在这里分享所学所得,如果有不正确的地方,希望大家多指正哦💝】
【如果喜欢我的文章,记得点赞关注收藏💡哦,姜姜会持续更新的📝】


💛在大家初学C语言的时候,会不会偶尔遇到一两个小问题不理解要思考好久
姜姜就属于那种脑子笨笨的转不过来的人哈哈😵
💛这次我分享下我在做题的时候遇到的 while(scanf(“%d %d”,&a,&b)!=EOF)
💛欢迎在评论区互相交流哦


请添加图片描述

---------------------- 屏幕前的你还不快来学习-----------------------
---------------------------------🍰🍰🍰🍰🍰🍰🍰🍰🍰🍰--------------------------------

目录:mag_right:

  • :star2:前言
  • :star2: EOF的含义
    • 1. 操作系统中的EOF
    • 2.C语言中的EOF(着重讲)
      • + 为什么用EOF作为文本结束标志(对应一)
      • +如何理解C语言中的EOF(对应二)
  • :star2: 对while(scanf("%d %d",&a,&b)!=EOF)的思考
    • 1.式子的适用范围以及例题
    • 2.了解格式化输入函数scanf
    • 3.这个程序如何结束?

🌟 EOF的含义

EOF是一个计算机语言,为End Of File的缩写,在操作系统中表示资料源无更多的资料可以读取;在文本的最后作为文本的结束标志

1. 操作系统中的EOF

操作系统如Linux之中,EOF不是一个字符,而是当系统读到文件结尾,所返回的一个信号值(-1),【怎么知道文件长度,资料只提到了比较文件的长度,这个后期研究了再讲。】

2.C语言中的EOF(着重讲)

C语言中(更精确地说成C标准数库中),EOF一是定义的一个宏表示文本结束的标志;二是用来判断调用一个函数是否成功(因为很多文件处理函数处错误后的返回值也是EOF)
注意:在一中:EOF其实不是一个字符,它是被定义为int类型的一个负数(比如-1)

+ 为什么用EOF作为文本结束标志(对应一)

因为在while循环中以EOF作为文本结束的文件必须是文本文件,而在文本文件中,数据都是以字符的ASCII代码值的形式存放,而我们都知道ASCII代码值的范围是0~127,不可能出现(-1等负数),因此可以用EOF作为文本结束的标志。


+如何理解C语言中的EOF(对应二)

你在用函数读入文件数据的时候,函数总会返回一个状态,是读取成功还是失败,这个状态怎么表示,所以约定俗成定义EOF表示这个状态

🌟 对while(scanf(“%d %d”,&a,&b)!=EOF)的思考

1.式子的适用范围以及例题

适用范围:题目有多组输入数据,并且数据没有固定量问题
例题:

在这里插入图片描述

#include <stdio.h>
int main()
{int a,b;while(scanf("%d %d",&a,&b)!=EOF){if(a==b){printf("%d=%d\n",a, b);}else if(a>b){printf("%d>%d\n",a,b);}else{printf("%d<%d\n",a,b);}}return 0;
}

一般C在读取数据时,都是按流模式进行数据读操作,这里的可以是文件,也可以是标准输入。EOF可以表示文件结尾,还可以表示标准输入的结尾。但是,标准输入与文件不一样,无法事先知道输入的长度,必须手动输入一个字符,表示到达EOF。
那如何结束程序呢??
❗️❗️一.可以手动输入来告诉系统已经到达EOF:1.win用<Ctrl+z>组合键 2.Unix/Mac/Linux中用<Ctrl+d>(以上均需先按下Ctrl,不要抬起再按住z,d)
二.可以以某一特定结束符作为终止标志(将在下面的3中详细讲述)


注:这篇文章上面这个例子就是标准输入,下面将介绍标准输入

2.了解格式化输入函数scanf

scanf的语法定义: scanf(“<格式化字符串>”,<地址表>)
scanf函数如果返回成功:返回赋值的数据项数
返回出错:返回EOF
注意scanf函数返回int型
例如:scanf(“%d %d”,&a,&b)
如果a、b均赋值成功➡️返回2
只是a赋值成功➡️返回1
a、b都不成功➡️返回0
出错的时候➡️返回EOF
(再次说明:EOF不是一个字符,它被定义为是int类型的一个负数-1)
如果我们输入了一个值那么返回就为1,
1 != -1➡️ scanf(“%d”,&n) != EOF
while(scanf(“%d”,&n) != EOF) 中while(A)语句中的事件A是正确的即1(非负),while(1){ }➡️进行下一循环。
【while是一个循环函数,while后面()是一个判别表达式,表达式返回值为真,即(!=EOF),则进入循环】,即只要输入不出错,while为死循环,但可以手动结束。

3.这个程序如何结束?

一:题目有多组输入数据,并且数据没有固定量问题,只给出以某一特定标识符作为结束标志,结束输入数据。常见是以输入0作为结束标志。
二:题目有多组输入数据,并且数据没有固定量问题,结束没有固定标识符,以手动结束输入循环。


分析一:以某一特定结束符作为终止循环的条件,通常是将0作为终止标志。
解决方法:while( scanf(“%d”,&n) != EOF, n ){ }
(我们来看括号中的n代表的是若我们在前一句输入的是0(&n取0),即此时n = 0(0表示“假”)即表达式需要结束循环,即实现了结束多次输入数据。)
若是-1作为终止标志,可以这样写while( scanf(“%d”,&n) != EOF, n != -1) { }
(输入-1时,n此时==-1,则表达式n != -1为 -1,结束循环。)(这句不理解看下面蓝色标注)
“,”号运算符作用:while后的括号为循环体的执行条件,其值取逗号运算后的值。
分析二:手动结束多组输入
解决方法:可以手动输入来告诉系统已经到达EOF:1.win用<Ctrl+z>组合键 2.Unix/Mac/Linux中用<Ctrl+d>(以上均需先按下Ctrl,不要抬起再按住z,d)然后结束while循环


原文链接:https://blog.csdn.net/weixin_57253110/article/details/121072575


http://chatgpt.dhexx.cn/article/xvZBmpY3.shtml

相关文章

c语言中eof的作用,eof在c语言中表示什么

eof在c语言中表示文件结束符。在while循环中以EOF作为文件结束标志&#xff0c;这种以EOF作为文件结束标志的文件&#xff0c;必须是文本文件。在文本文件中&#xff0c;数据都是以字符的ASCII码值的形式存放的。 在C语言中&#xff0c;或更精确地说成C标准函数库中表示文件结束…

QPSK调制解调过程,包括串并转换,电平转换,载波调制,相干解调,抽样判决等

目录 一、理论基础 二、核心程序 三、仿真结论 一、理论基础 QPSK是英文Quadrature Phase Shift Keying的缩略语简称&#xff0c;意为正交相移键控&#xff0c;是一种数字调制方式。在19世纪80年代初期,人们选用恒定包络数字调制。这类数字调制技术的优点是已调信号具有相对…

通信原理学习笔记2-1:模拟调制——相干解调的载波恢复、锁相环(平方环/Costas环)、变频/混频技术

原始信号为基带模拟信号&#xff0c;要想在空气中传播信号&#xff0c;必须使用频带信号&#xff08;频率高则天线长度降低&#xff0c;且可能进行频分复用等&#xff09; 要产生频带信号&#xff0c;需要频谱搬移&#xff0c;这就是调制&#xff1b;基带信号经过调制&#xff…

MATLAB编程实现2FSK信号的调制与解调(非相干解调)

2FSK信号的产生 数字频率调制又称频移键控&#xff08;FSK&#xff09;&#xff0c;二进制频移键控记作2FSK。数字频移键控是用载波的频率来传送数字消息&#xff0c;即用所传送的数字消息控制载波的频率。2FSK信号便是符号“1”对应于载频f1&#xff0c;而符号“0”对应于载…

杨学志《通信之道》9.3节相干解调公式推导

CS出身的本菜鸡&#xff0c;由于硕士研究方向为射频指纹(radio frequency fingerprint)&#xff0c;最近在恶补杨学志老师的《通信之道》&#xff0c;数学上遇到很多问题。本篇博客主要是对于书中9.3节相干解调中涉及到的公式的推导。 文章目录 1. 相干解调基本公式2. 公式&am…

FM非相干解调原理及Keil代码

FM非相干解调原理及Keil代码 原理拉格朗日插值代码 原理 原理部分因为有很多人解释就不赘述&#xff0c;需要的人会给出链接自行学习 相干解调&#xff1a;相干解调也叫同步检波&#xff0c;它适用于所有线性调制信号的解调。实现相干解调的关键是接收端要恢复出一个与调制载波…

2ASK非相干解调matlab

2ASK非相干解调matlab 2ASK信号产生 振幅键控是利用载波的幅度变化来传递数字信息&#xff0c;而其频率和初始相位保持不变。在2ASK中&#xff0c;载波的幅度只有两种变化状态&#xff0c;分别对应二进制信息“0”或“1”。一种常用的、也是最简单的二进制振幅键控方式称为通…

2dpsk差分相干解调matlab,2DPSK差分相干解调器设计.doc

您所在位置&#xff1a;网站首页 > 海量文档 &nbsp>&nbsp办公文档&nbsp>&nbsp简明教程 2DPSK差分相干解调器设计.doc9页 本文档一共被下载&#xff1a;次,您可全文免费在线阅读后下载本文档。 下载提示 1.本站不保证该用户上传的文档完整性&#xf…

2ASK非相干解调

2ASK非相干解调 **matlab程序实现****目录**2ASK信号产生2ASK信号非相干解调完整代码 matlab程序实现 目录 2ASK信号产生2ASK信号非相干解调全波整流器低通滤波器抽样判决器 2ASK信号产生 振幅键控是利用载波的幅度变化来传递数字信息&#xff0c;而其频率和初始相位保持不…

通信原理 简易2DPSK的相干解调与非相干解调的matlab实现

2DPSK信号的解调主要有两种方法。第一种方法是直接比较相邻码元的相位&#xff0c;从而判决接收码元是“0”还是“1”。为此&#xff0c;需要将前一码元延迟1码元时间&#xff0c;然后将当前码元的相位和前一码元的相位作比较。这种方法称为相位比较法。此方法对于延迟单元的延…

matlab相干解调,心电信号的调制与解调(AM调制、相干解调)

陈超 11108125 一. 系统构思: 1)、通信原理课程介绍了模拟信号的调制与解调。调制可以实现将低频信号频谱搬移到载频位置,解调相当于 调制的反过程。 2)、调制和解调的应用举例:3.4kHZ的话音信号经过调制后可经信道进行远距离传输,在接收端通过解调不失 真的恢复出原始信号…

关于相干解调

c实现数字信号通过低通滤波器 对前面采集的数字信号进行相干解调的过程中&#xff0c;使用到一个滤波器数组和接收信号数组的线性卷积的过程。 //lb2.c //离散序列线性卷积 #include <stdio.h> float convolute(double *f,double *g,unsigned int k) {unsigned int n0…

走进波分 -- 12.相干光解调技术

对于ASK调制信号&#xff0c;接收端可以直接检测幅度就可以进行解调 对于PSK和QAM调制&#xff0c;由于使用了相位来承载信息&#xff0c;所以必须采用相干解调即对相位进行解调的技术 相干&#xff0c;就是相互干扰 相干的概念来源于波动光学 在接收端&#xff0c;利用与发送…

Modis数据下载及后处理

最近需要用大量的modis数据&#xff0c;这里记录一下最近踩的坑吧 下载modis的地址&#xff1a; https://ladsweb.modaps.eosdis.nasa.gov/ 点击上面的find data就可以愉快找数据了。我一开始只知道上面这个网址&#xff0c;后面还会给别的选择。 首先我想要MOD16A2和MOD43A…

[MODIS数据处理#0]下个数据能再简单些吗?

引言 写MODIS数据处理这个系列文章的初衷&#xff0c;主要是为了分享本人在使用ArcGIS处理MODIS数据方面的一些经验。鉴于网上对这方面系统性的总结还比较少&#xff0c;当初我搜集资料时也是走了许多的弯路&#xff0c;因此希望通过此文让初学者能够更快的入门&#xff0c;把…

MODIS数据的简介和下载(二)——MODIS数据下载方式(FTP)

前一篇我们已经介绍了MODIS数据的简介、参数以及相关的典型应用。这一篇我们来介绍下MODIS数据的下载方式。当然这边主要是介绍国外网站的下载方式&#xff0c;国内网站的普遍是在地理空间数据云和遥感集市下载。国外网站&#xff08;NASA官网&#xff09;下载方式主要介绍两种…

MODIS数据下载、拼接、转tif

modis数据的优势在于时间序列长&#xff0c;产品种类多。 modis数据下载下来是hdf格式&#xff0c;且一份数据由很多瓦片数据组成&#xff0c;需要进行拼接、投影&#xff0c;转tif等操作 刚开始研究了好久使用MRT来对modis的hdf文件进行批量拼接&#xff0c;投影以及转tif&a…