C while循环 – 代码不起作用

我一直在写一个简单的程序来检查输入字母是否是元音,而我的代码不起作用。 程序应逐个输入字符作为输入,直到输入%,这将使其退出。 它检查输入字符是否为元音,并打印结果。 如果输入不是字母,它也会报告错误。 问题是,它在第​​二步中突破了循环。 提前感谢您的帮助。 PS对不起,没有写过没有错误信息,它只是突破了循环。

#include  #include  #include  int main(void) { char processed='q'; while(processed != '%') { printf("Enter letter to check if it's a vowel, %% to quit.\n"); char input = getchar(); processed = tolower(input); printf("%c\n", processed); if (processed == '%') break; if (processed  'z') { fprintf(stderr, "Input should be a letter\n"); exit(1); } switch(processed) { case 'a': case 'e': case 'i': case 'o': case 'u': case 'y': printf ("Vowel\n"); break; default: printf ("Non-vowel\n"); } } exit(0); } 

想必你输入一个角色,然后点击[ENTER]。 因此,实际上您输入了两个字符 – 您输入的字母和换行符( \n )。 第二次通过循环你得到换行符并发现它不是一个字母,所以你遇到了错误的情况。 也许你想要添加如下内容:

 if (processed == '\n') { continue; } 

有人提到你在每个输入字母后输入,然后在你的程序中发送换行符(’\ n’)。 由于您的程序没有处理它的情况,它无法正常工作。

您可以添加代码来处理换行符,但使用scanf会更容易。 具体来说,如果你更换了

 char indent = getchar(); 

 char indent; scanf("%c\n", &indent); 

scanf()将处理换行符并返回您感兴趣的字母。

当然,你应该检查scanf()的错误返回值。