You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

while循环中Getchar()跳过首个扫描输入值的问题如何解决

问题成因

  • 你在循环判断条件里已经用scanf("%c", &c)读取了第一个输入字符,但是没有对这个字符做任何处理,直接在循环体内又调用了一次getchar()读取下一个字符,这就导致第一个输入的字符被直接跳过。
  • 此外scanf的返回值是成功读取的变量个数,不是读取到的字符值,你原来写的判断条件scanf("%c", &c) != '='逻辑完全错误:scanf成功读入1个字符时返回值是1,永远不可能等于字符'='的ASCII值,所以这个循环终止条件根本不会生效。

修复方案

你可以直接用getchar()处理所有读取逻辑,不需要混用scanf,完全符合你逐个读取、不使用数组和字符串的要求:

int main () {
    char c;
    // 每次读取一个字符,直到读到=就终止循环
    while((c = getchar()) != '=') {
        printf("print ");
        putchar(c);
    }
    return 0;
}

效果验证

输入a=时,程序会先读取字符a,判断不是=后输出print a,下一次读取到=时直接终止循环,符合你的预期需求。

内容的提问来源于stack exchange,提问作者caccia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 02:48:04