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);
} 展开
(第一行按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);
} 展开
展开全部
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的时候,程序提示已得到文档结束标志
比如:
#include <stdio.h>
int main()
{
int c;
do
{
printf("请输入文档的结尾标志");
}while((c=getchar())!=EOF);
printf("已得到文档结束标志");
return 0;
}
当程序运行的时候,没有文档结尾,只能找一个命令来替代文档结尾,那就是Ctrl+z
如上面的一段程序,当你输入Ctrl+z的时候,程序提示已得到文档结束标志
展开全部
dos下EOF就是CTRL+Z或者F6,根据操作系统可能不同为CTRL+D(+C),都是强制结束标准输入流
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Windows系统中一般采用阻塞式检查 Ctrl+Z、Unix/Linux系统下一般采用非阻塞式的检查 Ctrl+D。因为是在Windows系统下,因此使用阻塞式的 Ctrl+Z 来标识流的结束。
阻塞式检查方式指的是只有在回车键按下之后才对此前是否有 Ctrl+Z 组合键按下进行检查,非阻塞式样指的是按下 Ctrl+D
之后立即响应的方式。如果在按 Ctrl+D 之前已经从键盘输入了字符,则
Ctrl+D的作用就相当于回车,即把这些字符送到输入缓冲区供读取使用,此时Ctrl+D不再起流结束符的作用。如果按 Ctrl+D
之前没有任何键盘输入,则 Ctrl+D 就是流结束的信号。
阻塞式检查方式指的是只有在回车键按下之后才对此前是否有 Ctrl+Z 组合键按下进行检查,非阻塞式样指的是按下 Ctrl+D
之后立即响应的方式。如果在按 Ctrl+D 之前已经从键盘输入了字符,则
Ctrl+D的作用就相当于回车,即把这些字符送到输入缓冲区供读取使用,此时Ctrl+D不再起流结束符的作用。如果按 Ctrl+D
之前没有任何键盘输入,则 Ctrl+D 就是流结束的信号。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询