入力した文字が大文字の場合に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
間違い
- プロンプトの後に来る「false」は、私が入力したものではありません。例えば:
- 1.プロンプトが表示されます
- 2. 文字「a」を入力します
- 3.コンソールは偽を出力します
- 4.プロンプトが表示されますが、プロンプトの横に「false」という単語も印刷されます
- 5.プロンプトが再び表示されます
したがって、 getchar() は私からのものではない入力を受け取っているようです。何か案は?