break命令如何在我的测试代码中起作用

时间:2014-11-17 16:47:12

标签: c break

我的测试代码如下:

#include <stdio.h>
int main(){
    char c;
    while ((c=getchar())!=EOF){
            if(c>='A'&& c<='Z'){
                    c=c-'A'+'a';
                    putchar(c);
            }
            //else break;
    }
    return 0;
}

没有else break命令,while循环永远存在,但是当我添加&#34; else&#34;命令行,循环只执行一次,我键入&#34; A&#34;它显示了&#34; a&#34;在显示器上然后停止。但我认为它应该是这样的:如果输入A~Z,那么如果输入字符不在范围内,则产生小写字母,例如。一些东西,它会打破循环,执行会停止。我在哪里弄错了?我试过在&#34; else&#34;之后添加大括号。周围&#34;休息&#34;,但结果仍然存在。

3 个答案:

答案 0 :(得分:1)

getchar函数将从stdin中读取每个字符,甚至是&#34; Enter / Return&#34;中的换行符。键。

当您启用else部分时,您的代码也会对导致中断的'\n'作出反应。

您可以尝试更改

else break;

通过

else if (c != '\n') break;

代码。

答案 1 :(得分:0)

char c;
while ((c=getchar())!=EOF){

需要

int c;
while ((c=getchar())!=EOF){

请参阅http://www.tutorialspoint.com/c_standard_library/c_function_getchar.htm

此外,你的代码并没有说'如果他们输入的字符串不是A-Z就停止',它会说'要求他们输入直到他们输入EOF' - 当他们输入A-Z'时回复给他们。 EOF类型为UNIX

上的ctrl-D

答案 2 :(得分:0)

如果您只输入A而没有其他内容,则您的计划会看到A和换行符\n。换行符与模式A...Z不匹配,因此执行break语句。

您可以通过打印字符代码来查看:

while ((c=getchar())!=EOF){
    printf("Character code: %d\n", c);
    ...
}

您可以输入ABACABB之类的内容来查看您想要的行为。