当我尝试第二次运行此循环时,它会打印“输入一个句子”,但会跳转 gets
部分。并立即询问答案以再次运行循环。我可以使用 scanf
如果问题没有出现,我将需要空白。
程序看起来像。
输入一句话:你
你
再来一次?是/否:是
不错的选择!
输入一个句子:
再来一次?是/否:
int main(void){
char user_input[20];
int boolean = 0;
char val[2];
do{
printf("Enter a sentence: ");
gets(user_input);
printf("%s\n", user_input);
printf("One more time? y/n: ");
scanf("%c", &val[0]);
if(val[0] == 'y'){
boolean = 1;
printf("Good choice!\n");
}else if(val[0] == 'n'){
printf("You are really quiting?\n");
boolean = 0;
}
}while(boolean);
return 0;
}
最佳答案
那是因为你的标准输入缓冲区中仍然有换行符,因此“gets”需要
该换行符作为其输入,您没有机会输入您的换行符。
在 scanf 之后使用 getchar() 来读取换行符,例如:
scanf("%c", &val[0]);
getchar();
或者您可以在 scanf 函数内进行一些调整:
scanf("\n%c", &val[0]); // insert a newline character in the beginning.
关于c - 忽略 while 循环中的第二次运行,C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26023494/