首页 > 电脑

请问C程序为什么需要按两次回车键才能运行

更新时间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”时出错