菜鸟 c语言的问题

来源:百度知道 编辑:UC知道 时间:2024/05/13 19:19:38
#include<stdio.h>

void main()

{
char t;
while(1)
{
printf("inter t:\n");
scanf("%c",&t);
printf("%c\n",t);
}
}

运行 上面的程序, 随便输入一个字母比如r,屏幕 会 显示 两行r 和两行inter t. 之后 才是 闪烁的光标,提示再次输入. 为什么会出现 两行 r 和 inter t?????
先不考虑死循环的问题,
输入r
输出
r
r
inter t:
inter t:光标
为什么有两行inter t:之后才是 光标提示再次输入
输入rr
输出
inter t:
inter t:
inter t:光标

楼主出现错误是因为用SCANF输入时,按下回车键其实是代表两个字符,并保存到下次用SCANF输入时.所以每次输入后应该加入
fflush(stdin); 关闭输入流,就可以正常输入了.
修改后代码:
#include<stdio.h>
void main()
{
char t;
while(1)
{
printf("inter t:\n");
scanf("%c",&t);
fflush(stdin);
printf("%c\n",t);
}
}

你向控制台输入字符后,控制台会把你输入的字符显示给你看,就是说输入的你可以看到,这是一行

你再用printf输出,又是一行

看到这些,想起我的大一生活。。。

你用的这个循环出了问题。因为在第一次你输入r后先出现你的输入,这是一个r,再执行下一句显示输入r,之后循环第二遍,又出一个inter t: ,之后才出提示再一次输入。所以出现此状况。你在printf("inter t:\n");
scanf("%c",&t);
printf("%c\n",t);的基础上改以下:printf("inter t:\n");
scanf("%c",&t);
char a=t;//呵呵,一个字符应该能这么赋值吧。
printf("%c\n",c);
你试一下吧。

因为你的t是用的char,他只存一个字符,你输入的时候一定是r<回车>,输出结果是
inter t:(这行程序一开始输入的,正常)
r(这是你输入的,正常)
r(这是程序返回的,到这里都是正常的)
inter t:(程序循环回来,输出的,也能算正常,但是已经不整齐了,下一行开始出现问题)