我的任务是创建一个简单的从小写到大写的程序.然而,在测试我的输入是否正确打印时,我注意到每次输入一个字符时,它总是会再次循环,即使它不应该.
#includeint 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 .
我没有看到问题.
这里的问题是由按键键入的newline
字符引起的.在继续下一个输入之前,您需要清除输入缓冲区,如添加stdin
ENTER
while (getchar() != '\n');
在要求下一个输入之前.
那说,getchar()
返回一个int
.A char
可能不足以始终保持返回值,更改
char input;
至
int input = 0;