C程序跳过fgets

时间:2013-11-22 17:24:21

标签: c scanf

我的程序编译正常,但是当它调用getinput()函数时,它从不提示输入。

编辑显示更多代码,我添加了fflush,但由于某种原因它仍然会跳过它。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


main(){

    char mystring[] = "It's equal to it. ";
    int k = 32;
    int e;
    printf("Enter a number: ");
    scanf("%d",&e);
    if(e == k){
        printf("\n\n%s\n",mystring);

    } else if(e < k){
        printf("\n\n%d\n",e);

    } else {


        getinput();
    }

    exit(0);

}

int getinput(){

    char gettext[64];

    printf("Enter text here: ");
    fflush(stdout);
    fgets(gettext, 64, stdin);
    printf("\n\nYou entered: %s\n\n",gettext);
    return 0;


}

2 个答案:

答案 0 :(得分:2)

在此行scanf("%d",&e)之后添加getchar(),如下所示:

scanf("%d",&e);
getchar();

当您按Enter时,换行符会保留在缓冲区中,因此当调用fgets时,换行符将被传递给它,并且就像按下Enter

一样

答案 1 :(得分:1)

在第一次打印后尝试拨打fflush(stdout);

printf会为您冲洗它,但只有当它在结尾处有换行符时(例如printf("hi\n");

相关问题