微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无限 while 循环代码正在打印 2 个“hello's”而不是一个 hello,其中代码从用户那里获取输入以检查字符如果是 n 个循环中断

如何解决无限 while 循环代码正在打印 2 个“hello's”而不是一个 hello,其中代码从用户那里获取输入以检查字符如果是 n 个循环中断

#include<stdio.h>
 
int main(){
    char ch;
    while(1){
        ch = getchar();
        if(ch =='n'){
            break;
        }
        printf("hello"); 
    }
}

Loop 正在打印 2 个 hello 而不是一个。 while 循环始终为真,并且如果字符为 n 则接受来自用户的字符,则循环中断,否则它必须打印 hello 并再次要求用户输入并进行处理。无法理解程序行为。

解决方法

发生这种情况是因为当您输入一个字母时,您会按下回车键,即“\n”。因此,使用另一个 getchar() 来容纳该换行符。 例如:-

#include<stdio.h>
 
int main(){
    char ch;
    while(1){
        ch = getchar();
        getchar();
        if(ch =='n'){
            break;
        }
        printf("hello\n"); 
    }
}
,

getchar() 读取一个字符。如果您以交互方式输入数据并键入 1 个字符后跟一个换行符,getchar 将读取 1 个字符加上换行符。 1 + 1 = 2,所以“hello”被打印了两次。

也许你想要:

#include <stdio.h>
#include <ctype.h>

int
main(void)
{
        int ch;   /* getchar() returns an int */
        while( (ch = getchar()) != EOF && ch != 'n' ){
                if( ! isspace(ch) ){
                        puts("hello");
                }
        }
        return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。