C语言中回车的ASCII码值是多少?
我打的程序如下:chari;i=getch();while(i=='\r'){printf("pig");scanf("%c",&i);}getch();为何我连续打回车...
我打的程序如下: char i; i=getch(); while(i=='\r') { printf("pig"); scanf("%c",&i); } getch(); 为何我连续打回车不能打印pig,如果我打成 { printf("pig"); i=getch(); } getch(); 连续敲打回车就能显示很多pig. 这是为什么?
展开
1个回答
展开全部
很正常
char
i;
i=getch();
//在这里,你按Enter
后,i的值为
13,即'\r'
while(i=='\r')
//条件满足,打印一个pig
{
printf("pig");
scanf("%c",&i);
//但是在这里,你按Enter
后,i的值为
10,即'\n'
}
getch();
为了验证上面的注释是否正确,可以加几条测试语句:
#include<stdio.h>
#include<conio.h>
void
main()
{
char
i;
i=getch();
printf("%d\n",i);
//打印i的值,13
while(i=='\r')
{
printf("pig\n");
scanf("%c",&i);
//这里会产生一个空行,下面结果里有。
printf("%d\n",i);
//打印i的值,10
}
getch();
}
运行结果为:
13
pig
10
Press
any
key
to
continue
没错吧,呵呵
注意,pig和10之间的空行。
所以,不会不断打印pig的原因是,getch()和scanf()返回的值根本不一样,while循环只会执行一次,按第二次Enter键条件就不满足了,自动跳出循环。
至于第二个程序为什么能不断的打印pig,现在知道原因了吧,呵呵,因为getch()取得的值一样,都是13,所以才能不断地执行循环呀。
char
i;
i=getch();
//在这里,你按Enter
后,i的值为
13,即'\r'
while(i=='\r')
//条件满足,打印一个pig
{
printf("pig");
scanf("%c",&i);
//但是在这里,你按Enter
后,i的值为
10,即'\n'
}
getch();
为了验证上面的注释是否正确,可以加几条测试语句:
#include<stdio.h>
#include<conio.h>
void
main()
{
char
i;
i=getch();
printf("%d\n",i);
//打印i的值,13
while(i=='\r')
{
printf("pig\n");
scanf("%c",&i);
//这里会产生一个空行,下面结果里有。
printf("%d\n",i);
//打印i的值,10
}
getch();
}
运行结果为:
13
pig
10
Press
any
key
to
continue
没错吧,呵呵
注意,pig和10之间的空行。
所以,不会不断打印pig的原因是,getch()和scanf()返回的值根本不一样,while循环只会执行一次,按第二次Enter键条件就不满足了,自动跳出循环。
至于第二个程序为什么能不断的打印pig,现在知道原因了吧,呵呵,因为getch()取得的值一样,都是13,所以才能不断地执行循环呀。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询