我的任务是创建一个简单的从小写到大写的程序。但是,在测试我的输入是否正确打印时,我注意到每次输入一个字符时,它总是会再次循环,即使它不应该也是如此。
#include <stdio.h>
int main() {
char input;
//enter a character
//set the given input char to variable
printf("Enter a character in lower case: \n");
input = getchar();
//Sentinel value is Q
while (input != 'Q'){
printf("you entered %c.\n",input);
printf("\n");
printf("Enter a character in lower case: \n");
input = getchar(); //gets input from inside the loop
}
printf("Goodbye \n");
return 0;
}
测试输出(我输入字符'g'并按下输入一次):
Enter a character in lower case:
g
you entered g.
Enter a character in lower case:
you entered
.
我没有看到问题。
答案 0 :(得分:6)
这里的问题是由{kld> ENTER 键进入newline
的{{1}}字符引起的。在继续下一个输入之前,您需要清除输入缓冲区,例如添加
stdin
在请求下一个输入之前。
也就是说,getchar()
会返回 while (getchar() != '\n');
。 int
可能不足以始终保留返回值,更改
char
到
char input;