首页 > 编程知识 正文

scanf有返回值吗,while scanf!=eof怎么停下来

时间:2023-05-05 23:53:31 阅读:116744 作者:4375

EOF是文件结尾的缩写,通常在文本末尾有这个字符,表示数据的结尾。

在Microsoft dos和Windows中,读取数据时终端不会发生EOF。 此时,APP应用程序会识别数据源是终端(或其他“字符设备”),并将已知的保留字符或序列解释为文件退出的指示。 最常见的是ASCII代码中的替换字符(控制- z,代码26 )。 在在C语言中或更准确地说在c标准函数库中表示文件结尾(end of file )。 在while循环中,以EOF为文件结束标志,这种以EOF为文件结束标志的文件必须是文本文件。 在文本文件中,所有数据都存储为字符的ASCII代码值。 ASCII代码值的范围为0到127,已知不会出现-1,因此可以将EOF用作文件结束标志。

文件访问和其他输入/输出功能可能返回符号值(宏) EOF,指示文件已退出。 实际EOF的值通常为-1,但因系统而异。 宏EOF在编译源代码之前将实际值解压缩到预处理器中。

在c语言中,EOF经常被认为是文件结束的信号。 此外,许多文件处理函数的错误后返回值也是EOF,因此经常用于确定函数调用是否成功。

例如:

#include stdio.hint main () {int n; wile (扫描(' % d ',n )!=eof}{}return0; }上面的程序正在运行时,显示为“!=EOF '时,该程序在死循环中一直运行; 加'!=EOF '后,该程序不是死循环,如果终端不进行输入,将自动退出。 (while表示如果当前输入缓存中有任何内容,它将继续读取,直到输入缓存的内容为空。)。

此' scanf('%d ',n '!=EOF '相当于' scanf ',n '!=EOF ',或'~scanf ',n ',或' scanf ',==1'。 扫描的返回值由后面的参数决定

伙伴问上面的程序怎么结束。

需要注意的是,如果用终端(黑框)手动输入,系统不知道什么时候到达了所谓的“文件末尾”,所以需要通过按Ctrl z键,然后按Enter键来告诉系统系统系统已关闭这样,系统就会退出while。

scanf("%d%d", a, b);

如果a和b都成功加载,则扫描返回值为2;如果只有a成功加载,则返回值为1; 如果a和b未成功读取,则返回值为0。 如果发生错误或文件结束,则返回值为EOF,返回值为int类型。

但是在C++中不存在这种用法,但相同作用的有while((cin a) != 0):

以前不理解在while中使用cin a; 什么意思,cin是c输入流对象,“”是重载运算符,cin返回值是cin对象。 在此条件下,通过检测其流程状态来判断结束;

(1)流程有效,即流程未遇到错误,检查成功;

)2)如果遇到文件结束符或输入无效(例如,如果您在主题中输入的值不是整数),则istream对象的状态无效,条件为假。 如果读取失败,将无法继续读取。 读取操作结束后,while(Cina )返回false,退出循环!C++中的while (cinn,n):

他的作用是输入一个数,如果该数不为0,则进入循环,如果该数为0,则退出循环。

通过: " https://www.cn blogs.com/tgy coder/p/4958519.html "

输入(cin )缓冲区是行缓冲区。 从键盘输入字符串并按回车时,这些字符首先被发送到输入缓冲区进行存储。 每次按回车键时,cin都会检测输入缓冲区中是否存在可读数据。 在这种情况下,cin会检查键盘上是否有作为流结束标志的CTRL Z或CTRL D。 有两种方法:分块和非分块。

阻塞检查方式是指仅在按下进入键后才检查是否按下了Ctrl Z键的方式,非阻塞方式是指在按下Ctrl D后立即进行响应的方式。 如果在按Ctrl D之前通过键盘输入字符,则Ctrl D将用作回车。 这意味着将这些字符发送到输入缓冲区进行读取,Ctrl D不再用作流结束符。 如果在按Ctrl D之前没有键盘输入,则Ctrl D是流程结束的信号。

积木式的方式有其特点。 只有按回车,才能检测到在此之前是否按下了Ctrl Z。

参考:百度百科。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。