C语言Ctrl+z是EOF么? 40

下面语句执行时,第一行假设我输入1后面再按Ctrl+z再按Enter第二行再按Ctrl+z再按Enter执行处结果如下图nother的值为1。但是如果第一行是按1按Ent... 下面语句执行时,第一行假设我输入1后面再按Ctrl+z再按Enter 第二行再按Ctrl+z再按Enter执行处结果如下图 nother的值为1。 但是如果第一行是按1按Enter第二行按Ctrl+z再按Enter执行结果nother就为0.
(第一行按1后面再按Ctrl+z是为了不让程序去取1后面的Enter('\n')的值。因为不加Ctrl+z就会使nwhite=1.

疑问就是第一行输入1后面再按Ctrl+z再按Enter 为什么会满足else ++nother;
main()
{
int c, i, nwhite, nother;
int ndigit[10];
nwhite = nother = 0;
for (i = 0; i < 10; ++i)
ndigit[i] = 0;
while ((c = getchar()) != EOF)
if (c >= '0' && c <= '9')
++ndigit[c-'0'];
else if (c == ' ' || c == '\n' || c == '\t')
++nwhite;
else
++nother;
printf("digits =");
for (i = 0; i < 10; ++i)
printf(" %d", ndigit[i]);
printf(", white space = %d, other = %d\n",nwhite, nother);
}
展开
 我来答
斯坦恩贝格(北京)电子有限公司
2015-09-15 · 斯坦恩贝格生产销售“希曼顿”牌固态继电器、电力调整器,温控器
斯坦恩贝格(北京)电子有限公司
斯坦恩贝格生产销售“希曼顿”牌固态继电器、电力调整器,温控器
向TA提问
展开全部
C语言中,EOF即文档的结尾.但是,当你写一个小程序,并以EOF作为判断条件时,就无法输入文档的结尾了,只能人工输入一个,这个人工输入的文档结尾就是Ctrl+Z
比如:
#include <stdio.h>
int main()
{
int c;
do
{
printf("请输入文档的结尾标志");
}while((c=getchar())!=EOF);
printf("已得到文档结束标志");
return 0;
}
当程序运行的时候,没有文档结尾,只能找一个命令来替代文档结尾,那就是Ctrl+z
如上面的一段程序,当你输入Ctrl+z的时候,程序提示已得到文档结束标志
百度网友0800e07
2013-11-04 · TA获得超过289个赞
知道小有建树答主
回答量:224
采纳率:100%
帮助的人:156万
展开全部
dos下EOF就是CTRL+Z或者F6,根据操作系统可能不同为CTRL+D(+C),都是强制结束标准输入流
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
酒笃
推荐于2018-02-27
知道答主
回答量:8
采纳率:100%
帮助的人:5.5万
展开全部
Windows系统中一般采用阻塞式检查 Ctrl+Z、Unix/Linux系统下一般采用非阻塞式的检查 Ctrl+D。因为是在Windows系统下,因此使用阻塞式的 Ctrl+Z 来标识流的结束。
阻塞式检查方式指的是只有在回车键按下之后才对此前是否有 Ctrl+Z 组合键按下进行检查,非阻塞式样指的是按下 Ctrl+D
之后立即响应的方式。如果在按 Ctrl+D 之前已经从键盘输入了字符,则
Ctrl+D的作用就相当于回车,即把这些字符送到输入缓冲区供读取使用,此时Ctrl+D不再起流结束符的作用。如果按 Ctrl+D
之前没有任何键盘输入,则 Ctrl+D 就是流结束的信号。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式