[英]Simple while-loop
我的代碼:
#include <stdio.h>
int main(void){
char input;
while(1){
printf("Repeat? [Y/N] ");
scanf("%c", &input);
if(input=='N' || input=='n'){
break;
}
}
return 0;
}
預期產量:
Repeat? [Y/N] y
Repeat? [Y/N] y
Repeat? [Y/N] n //Program terminated
輸出:
Repeat? [Y/N] Repeat? [Y/N] y
Repeat? [Y/N] Repeat? [Y/N] y
Repeat? [Y/N] Repeat? [Y/N] n //Program terminated
scanf
正在讀取輸入緩沖區中的\\n
字符(按Enter鍵)。 只需將您的scanf
替換為
scanf(" %c", &input);
// ^A space before %c can skip any number of white-spaces
更改
scanf("%c", &input);
至
scanf(" %c", &input); //Note the space before %c
當程序提示您輸入字符時,您輸入字符並按Enter鍵( \\n
)。 scanf
讀取您輸入的字符,並將換行符( \\n
)留在輸入流( stdin
)中。 結果,下次調用scanf
,它會看到stdin
存在\\n
,因為它也是一個字符,所以scanf
會使用它,因此,它不等待輸入。
%c
之前的空格指示scanf
在讀取字符之前跳過所有空格,例如換行符和空格。
在Enter
y / n后按Enter
時,您還將Enter
一個Enter
字符。 因此,您會Repeat? [Y/N] Repeat? [Y/N]
Repeat? [Y/N] Repeat? [Y/N]
如果您僅可以添加一行getchar();
那么您的代碼就不錯了getchar();
喜歡 :::
int main(void){
char input;
while(1){
printf("Repeat? [Y/N] ");
scanf("%c", &input);
if(input=='N' || input=='n'){
break;
}
getchar(); // for taking enter
}
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.