更新时间2018-09-20 05:33:03
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int i,j;
int x = 10;
int y = 5;
char input;
while(1)
{
system("cls");
for (i=0;i<x;i++)
printf(" ");
for (j=0;j<y;j++)
printf(" ");
printf("* ");
scanf("%c",&input);
//input=getch();
if(input=='s')
x++;
if(input=='w')
x--;
if(input=='a')
y--;
if(input=='d')
y++;
}
return 0;
}
这个程序就是分别输入‘a’'w' 'd' 's'会将 * 左上右下的移动,可是输入对应的字母之后需要按两次回车键才能运行,不知道是何种原因,谢谢大佬的回答
c语言通过标准输入设备(键盘)输入的时候是先把数据存到缓冲区里面。
首先编译器看到scanf("%c", &ch);后知道需要一个字符,那么就在缓冲区里寻找找是否有一个字符,如果缓冲区中没有则会请求用户输入。而如果缓冲区有字符的话就会把缓冲区里的字符存入变量中。在你刚才的输入时,字符'a'和回车('
')都会存放在缓冲区中,所以第二次scanf不会请求用户输入而直接把
存到变量中去了。
你可以这样写:
printf("Please enter a character:
");
scanf("%c
",&ch);
这样可以把换行字符从缓冲区清除掉。
你可以ctrl+z或者ctrl+d
因为你的设置是这样的
scanf/getch
是有缓冲的输入,一定要输入回车后才能接收字符的
你可以用getch()或getche()来输入字符(在conio.h中)
C程序为什么需要按两次回车键才能运行是因为输出语句自动换行的,望采纳
上一篇:我的这个主板可以换这个显卡吗?
下一篇:安装“IOS12”时出错