~scanf()和EOF

本文介绍了C语言中EOF的含义,它通常用于表示文件结束或输入流结束。在while循环中,~scanf("%d",&n)用于检测输入是否结束,当没有输入时,EOF的按位取反结果为0,导致循环结束。同时,文章提到了在C++中,使用cin进行输入判断的类似机制。" 100183493,1897219,Tomcat与Servlet初探:源码学习之旅,"['Java', 'Tomcat', '源码分析', 'Web开发', '后台开发']
摘要由CSDN通过智能技术生成

可以经常在ACM代码中看到 while(~scanf("%d",&n)){ } 这样的代码,意思是在读到输入结尾时循环也结束。

~是按位取反

scanf的返回值是输入值的个数

如果没有输入值就是返回-1

-1按位取反结果是0

while(~scanf("%d", &n))就是当没有输入的时候退出循环

一般在读到输入流结尾时,scanf返回的是EOF。

EOF是在头文件stdio.h中定义的常量,一般为-1。

~EOF则是对EOF进行按位取反操作,则为00000000。所以while条件不满足,循环结束。

EOF,为End Of File的缩写,通常在文本的最后存在此字符表示资料结束。

EOF 的值通常为 -1

EOF详细解释

转载链接为:EOF的意义及用法 - Tsingke - 博客园 (cnblogs.com)

在微软的DOS和Windows中,读取数据时终端不会产生EOF。此时,应用程序知道数据源是一个终端(或者其它“字符设备”),并将一个已知的保留的字符或序列解释为文件结束的指明;最普遍地说,它是ASCII码中的替换字符(Control-Z,代码26)。</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值