Windows 下EOF 和 Linux 下EOF的区别

three.js中如何高效加载并播放GLB格式的3D动画 本文详细介绍了在three.js中高效加载并播放GLB格式3D动画的最佳实践。通过对比GLB与GLTF格式的优势,提供从环境搭建、模型加载到动画控制的完整解决方案,并分享性能优化技巧和常见问题排查方法,帮助开发者提升3D动画项目的开发效率和用户体验。 阅读详情

由于C++作业在Windows下 用VS写的,提交作业要用Linux测试,出现了一些问题。

经过查阅,发现Windows 和 Linux下EOF指令的一些区别,在这里记录一下,如有理解不当的地方请指正哈。


主要参考博主爱若一生的文章http://blog.youkuaiyun.com/cwj649956781/article/details/7327937


EOF是end of file的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是文件(file),也可以是标准输入(stdin)。当从键盘上输入一串字符并按回车后,这些字符会首先被送到输入缓冲区中存储。每当按下回车键后,cin.get()    就会检测输入缓冲区中是否有了可读的数据。cin.get()    还会对键盘上是否有作为流结束标志的    Ctrl+Z    或者    Ctrl+D    键作出检查。

检测EOF的方式有两种:阻塞式和非阻塞式。


阻塞式只在按下回车后才检测之前是否有Ctrl + Z 是否按下(Windows一般采用阻塞式,Ctrl + Z表示EOF)。如果先输入了一些字符,没有回车换行重新输入Ctrl+Z,那么输入缓冲区由于存在其他的可读数据,从而不会检测到Ctrl+Z(因为有要读的数据,所以不能认为到了文字流的末尾)。所以,若想在windows下正确执行EOF,必须新的一行只输入Ctrl+ Z指令。


Ctrl+Z产生的不是一个普通的ASCII码值,也就是说它产生的不是一个字符,所以不会跟其它从键盘上输入的字符一样能够存放在输入缓冲区。   


例如,从键盘上输入abcd^z  ,再回车之后在Windows系统上是这样处理的:由于回车的作用,前面的  abcd    等字符被送到输入缓冲区(注意:上面说过了,^z不会产生字符,所以更不会存储到输入缓冲区,缓冲区中没有   ^z   的存在)。这时,cin.get()    检测到输入缓冲区中已经有数据存在(因此不再检查是否有    ^z    的输入),于是从缓冲中读取相应的数据。如果都读取完了,则输入缓冲区重新变为空,cin.get()    等待新的输入。可见,尽管有    ^z    按下,但是由于在此之前还有其它输入(abcd),所以流也不会结束。


非阻塞式 是指按下   Ctrl 的组合键  之后立即响应的方式(Unix / Linux 一般采用非阻塞式, Ctrl + D 表示EOF)。如果先输入了一些字符,未换行直接输入 Ctrl + D,需要再次输入Ctrl + D 才可以正常EOF。当终端有字符输入时,Ctrl+D产生的EOF相当于结束本行的输入,将引起getchar()新一轮的输入;当终端没有字符输入或者可以说当getchar()读取新的一次输入时,输入Ctrl+D,此时产生的EOF相当于文件结束符,程序将结束getchar()的执行。





多个linux系统安装到一块硬盘(Kylin+UOS+ubuntu) 之前写过一篇类似的文档,笔者把kylin和UOS安装在一块硬盘上上一篇的文档地址多个linux系统安装到一块硬盘(Kylin+UOS)_银河麒麟系统和uos安装成双系统-优快云博客本次记录的是三个系统到一块硬件上银河麒麟:Kylin-Desktop-V10-SP1-Release-2107-arm64统信:uniontechos-desktop-20-professional-1050-arm64乌班图:ubuntu-22.04.5-live-server-arm64。 阅读详情

相关推荐

OpenClaw实操:给网站装上“智能眼睛”?手把手教你用OpenClaw实时监控网站

本文介绍如何在Windows系统使用OpenClaw构建智能网站监控助手。手把手教你通过配置本地AI模型,让openclaw构建的ai助手自动检测指定网页的内容变化,理解更新重要性,并及时通过邮件、微信、Telegram等渠道发出预警,让你第一时间掌握关键信息,彻底告别手动刷新。

plawuyue的博客 2162

EOF的意义和使用

如果在按 Ctrl+D 之前已经从键盘输入了字符,则 Ctrl+D的作用就相当于回车,即把这些字符送到输入缓冲区供读取使用,此时Ctrl+D不再起流结束符的作用。每当按下回车键后,cin 就会检测输入缓冲区中是否有了可读的数据,这种情况下cin对键盘上是否有作为流结束标志CTRL+Z或者CTRL+D,其检查的方式有两种:阻塞式以及非阻塞式。是什么意思,cin是C++的输入流对象,">>"是重载的运算符,cin>>的返回值是cin对象。他的作用是:输入一个数,这数不为0时进入循环,为0时跳出循环。

BCLL_Leo的博客 2278

STM32C8T6实战:用PID算法搞定超级电容的10W无线恒功率充电(附代码避坑)

本文详细介绍了如何使用STM32C8T6和PID算法实现超级电容的10W无线恒功率充电。通过优化硬件设计、动态调整PID参数以及三重滤波技术,解决了超级电容充电过程中的功率尖峰和效率问题。附有代码示例和调试经验,帮助开发者快速实现高效稳定的无线充电方案。

weixin_29190169的博客 405

有关C语言中的EOF

关于EOF

有趣的中国人的博客 716

安卓逆向实战:利用Frida-RPC自动化获取大麦演唱会数据

本文详细介绍了如何利用Frida-RPC技术实现安卓逆向自动化,以获取大麦演唱会数据。通过实战演示,从环境搭建、使用Frida动态分析定位核心签名算法,到封装为可复用的Python脚本,完整解析了自动化数据获取的技术路径与工程化思考。

cheese的博客 974

Oracle Patch清理

- opatch clean的帮助,该命令清除.patch_storage directory文件夹下的'restore.sh,make.txt' files and 'scratch,backup'-- 执行完毕后,貌似没有变化,可能和自己环境有关(19年开始测试补丁,基本上每个季度都测试,后面把又把数据库用RMAN做了迁移,又转换成了PDB模式)。在对Oracle安装补丁后,会发现OS上被占用了大量的空间,本文档清理Opatch过程中的一些文件,释放空间。--清理后空间,剩余25G。

文档搬运工 1072

键盘如何键入EOF

其实我们所遇到的绝大多数系统都支持我们键入EOF来模拟文件尾的情况,下面我们就来汇总下各个系统上的EOF键入方式。 在Unix中 可以按下 Ctrl + D 来实现 在Windows中 可以通过Ctrl + Z 和 Enter 注意要在命令行模式 用于Mac的Symantec中使用 Ctrl + D 来实现 Microsoft Visual C++,Borland C++,GNU C++ 识别 ...

李兆龙的博客 3540

从零到一:基于GeneMark-ES/ET的新基因组注释实战指南

本文提供了一份基于GeneMark-ES/ET的新基因组注释实战指南。详细介绍了从环境搭建、数据准备到核心运行的全流程,重点解析了ES(从头预测)与ET(结合RNA-Seq证据)两种模式的选择与操作,并分享了Perl模块依赖、并行处理等常见问题的解决方案,帮助生物信息学研究者高效完成基因预测工作。

weixin_29266647的博客 209

Linux与Windows关于标准输入中涉及EOF的处理方式

程序: #include void main() { int c = getchar(); int i = 0; while (c != EOF) { putchar(c); c = getchar(); i++; } if (feof(stdin)) { printf(" End of file reached.%d", i); } else {

不是码农 3695

Kafka 入门篇(一)

初识 Kafka 什么是 Kafka Kafka 的基本术语 Kafka 的特性(设计原则) Kafka 的使用场景 Kafka 的消息队列 点对点模式的消息队列 发布-订阅模式的消息队列 Kafka 系统架构 核心 API Kafka 为何如此之快 broker 端配置 broker.id port zookeeper.connect log.dirs num.recovery.threads.per.data.dir auto.create.topics.enable topic默认配置 num.par

1232

Python爬虫实战:利用Selenium与反反爬技术高效爬取企查查工商信息

本文将详细介绍如何使用Python最新爬虫技术(包括Selenium、Playwright、智能代理池等)爬取企查查工商信息数据。文章包含完整的代码实现、反反爬策略、数据解析与存储方案,以及法律合规性讨论,共计约8000字。企查查作为国内领先的企业信息查询平台,收录了超过2亿家企业的工商信息、司法信息、知识产权等数据。这些数据对于市场分析、商业决策等具有重要价值。法律边界提示禁止大规模爬取导致服务器过载不得绕过付费接口获取数据数据使用需遵守《个人信息保护法》商业用途需获得授权。

2201_76125261的博客 2236

深入解析:批处理文件中EOF命令的妙用

批处理文件(Batch File)是Windows操作系统中一种自动化脚本,用于执行一系列命令。在批处理文件中,EOF命令扮演着特殊的角色,它通常用来标记一个区域的结束。本文将详细解释EOF命令的作用,并展示如何在实际的批处理脚本中使用它。

2401_85763639的博客 1176

【AirPlay】苹果认证MFI学习

配件认证是一个过程,通过这个过程,可验证其配件符合MFi技术规范,并通过苹果指定的任何认证测试。MFi门户中的产品计划 "认证 "页面将指导你完成特定配件所需的认证步骤,并指出何时完成所有要求。在完成所有MFi认证要求之前,你不得制造、分发或销售任何配件。在开始MFi认证过程之前,你必须测试你的配件,以确保它符合最新的MFi技术规范,通过产品计划 "测试计划 "上的所有适用测试,并与它将声称具有兼容性的每个苹果设备兼容。

天天的博客 2275

关于回车,换行,EOF

[b][size=large]回车换行[/size][/b]: http://www.cnblogs.com/faraway/archive/2009/03/05/1403649.html 这位大哥解释的很清楚。 我整理下: 三种系统的行结尾: Windows: “\r\n” 0x0d0x0a; //顺序不能错。 Mac : “\r” 0...

大喘之鱼 2645

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

换行符 和 文件结束符EOF

转帖出处:http://zhangjunxin520.blog.163.com/blog/static/3050370320098610291239/ 关于文件结束符EOF   文本方式和二进制方式的最大区别在于文本方式对于''\n''换行符的理解不同 (1)在DOS平台下,该字符会被展开成两个控制字符(相当于"\r\n"),在ASCII字符集下是 0DH,0AH

ozdazm的专栏 6155

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

EOF(“文字流”结尾)

EOF 这个概念通常出现于文件操作中,之前一直不是很懂,根据阮老师的文章,自己也跟着整理一下。 参考文章:http://www.ruanyifeng.com/blog/2011/11/eof.html (1)EOF 的基本概念 EOF :是 end of file 的缩写,字面上的意思...

chouzhan0246的博客 850

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

关于EOF的小随笔

因为以前写的时候,往往在输入数值时,习惯用getchar!=来控制while的循环,没怎么注意while(scanf("%s", str[i]) != EOF)这个用法。 这个与前者不同,因为是EOF,所以,在我们想要停止输入时,我们需要在面板出按Ctrl+Z才可以结束while的循环。 ...

寂音沫夜的博客 254

C语言如何输入EOF

经常写这样的代码 [code="c"] while((c=getchar())!=EOF){ if(c=='\n'){ count++; } } [/code] 我们知道EOF是stdio库中的常量,在windows里值是-1。 但问题是,如上面这个程序我们执行的时候,如何输入‘EOF’呢,输入-1?不管用啊,Google了一下,答案在这里: [b]win...

clouisandy1984的博客 801

C语言:关注EOF

<br />很多人都写过这样的代码:<br />#include <stdio.h> main() { int c; c = getchar(); while(c != EOF) { putchar(c); c = getchar(); } }<br />而且理解这个代码并不是一件困难的事情,相反,太简单了.但是,如果深究,就会发现一个有意思的事情,如果不考虑重定向,也就是说,我们是从stdin 输入的,那么,我们应该输入什么信息,被认为是EOF呢?细心的读者可能注意到了,我们在声

Rockics的专栏 1095

关于EOF的几个问题

1 如何输入EOF ctrl + z in win or ctrl + d in linux 2 阻塞式以及非阻塞式 输入缓冲是行缓冲。当从键盘上输入一串字符并按回车后,这些字符会首先被送到输入缓冲区中存储。每当按下回车键后,cin.get() 就会检测输入缓冲区中是否有了可读的数据。cin.get() 还会对键盘上是否有作为流结束标志的 Ctrl+Z 或者 Ctrl+D 键

rockly89的博客 640

关于while(cin>>x)和while(scanf(“%d,&x))的区别

这个真的很关键,是一处细节。 同样的形式,使用while(cin>>a)可以AC,但是使用while(scanf("%d",%a))就是TLE,使用while(scanf("%d",%a)==EOF)才能AC. 一、EOF EOF,是End Of File的缩写,存在于文本文件的结尾,表示文件结束。EOF的值为-1。 在终端输入数据时,不会产生EOF。应用程序将一份已知的保留字符或序列解释为文件的结束,也就是EOF是ASCII码中的替换字符(ctrl+z) EOF用作文件结束符,也常常用来判

枫飘长安的博客 1167

python中文本文件r_python 基础-文件读写'r' 和 'rb'区别

原文链接:一、Python文件读写的几种模式:r,rb,w,wb 那么在读写文件时,有无b标识的的主要区别在哪里呢?1、文件使用方式标识'r':默认值,表示从文件读取数据。'w':表示要向文件写入数据,并截断以前的内容'a':表示要向文件写入数据,添加到当前内容尾部'r+':表示对文件进行可读写操作(删除以前的所有数据)'r+a':表示对文件可进行读写操作(添加到当前文件尾部)'b':表示要读写二...

weixin_39880150的博客 144

wc统计为何少了一行

使用wc统计文件时,发现文件数量总是少一行,原因何在?

Gavin Blog 768

细枝末节之 文件结束符与 “26”

文件结束符 有些时候,我们需要输入许多数据,总要有一个符号来表示输入结束,这个符号就是文件结束符 文件结束符是一个标志,它并不是一个字符,在C语言的stdio库中给出了它的定义:define EOF (-1) 所以文件结束符其实是一个int类型的数-1 Windows环境下文件结束符是Ctrl+z,Linux环境下文件结束符是Ctrl+d 文件结束符只有在第一位的时候才会被编译成EOF,也就是...

ComingLiu的博客 678

Python: 命令行输入与ACM平台上的输入的区别以及总结

在leetcode、牛客平台上,python进行不确定行输入的代码可以正常结束,在本地命令行模式下进行测试用例的输入却不能正常结束,我是按连续两次回车键进行结束输入的。 运行结果及报错内容 解决方案 第一种解决方案 windows cmd: 命令行模式下,最后一行输入完成后,回车换行,Ctrl+Z,再回车,正常结束, 听说: Linux: Ctrl + D, 没验证。 参考链接 第二种解决方案 将测试用例写入一个txt文件中,用文件进行输入,感觉怎么几年python白学了,真的是第一次清晰地知道用文件进行

A_miyan的博客 312
上一篇: Python学习记录——Python 2.7的安装
下一篇: Java学习笔记——JDK, JRE, JVM
ElaineHou
博客等级 码龄10年 9粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值