学习C,循环错误

时间:2016-01-11 20:39:35

标签: c

我的任务是创建一个简单的从小写到大写的程序。但是,在测试我的输入是否正确打印时,我注意到每次输入一个字符时,它总是会再次循环,即使它不应该也是如此。

#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
.

我没有看到问题。

1 个答案:

答案 0 :(得分:6)

这里的问题是由{kld> ENTER 键进入newline的{​​{1}}字符引起的。在继续下一个输入之前,您需要清除输入缓冲区,例如添加

stdin
在请求下一个输入之前

也就是说,getchar()会返回 while (getchar() != '\n'); int可能不足以始终保留返回值,更改

char

 char input;