我正在创建一个程序,如果我输入的字符返回true 是一个大写字母,当我输入字符'0'时循环停止。代码如下:
#include <stdio.h>
int main (void)
{
char c;
do
{
printf ("Please enter character to check if uppercase: ");
c = getchar ();
if ( (c >= 'A') && (c <= 'Z') )
{
printf ("true\n");
}
else
{
printf ("false\n");
}
} while ( c != '0');
return 0;
}
然而,我得到了奇怪的行为(输出):
请输入字符以检查大写:a
假
请输入字符以检查大写:false
请输入字符以检查是否大写:b
假
请输入字符以检查大写:false
请输入字符以检查大写:A
真
请输入字符以检查大写:false
请输入字符以检查大写:0
假
-
提示后出现的“假”不是我输入的内容。
例如:
所以似乎getchar()正在接受不是来自我的输入。 有什么想法吗?
答案 0 :(得分:2)
getchar()
会留下在下一次迭代中使用的换行符。添加另一个getchar()以忽略换行符:
c = getchar ();
getchar(); // To consume the newline
或读出所有直到换行符:
int c=0;
while ((c = getchar()) != '\n' && c != EOF) ;
答案 1 :(得分:2)
您没有处理换行符。
请参阅this答案以获得澄清。