我的程序编译正常,但是当它调用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;
}
答案 0 :(得分:2)
在此行scanf("%d",&e)
之后添加getchar()
,如下所示:
scanf("%d",&e);
getchar();
当您按Enter
时,换行符会保留在缓冲区中,因此当调用fgets
时,换行符将被传递给它,并且就像按下Enter
答案 1 :(得分:1)
在第一次打印后尝试拨打fflush(stdout);
。
printf
会为您冲洗它,但只有当它在结尾处有换行符时(例如printf("hi\n");
)