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

如何实现输入循环直到用户连续按下两次回车键?

解决连续两次回车终止输入循环的问题

嗨,我来帮你搞定这个连续两次回车终止循环的需求~你的核心问题是需要检测连续两个回车键输入(也就是连续的'\n'字符),但当前代码只检查了单次输入,没有记录上一次的状态,所以没法判断是否连续触发。

核心思路

我们需要一个额外变量来保存上一次读取到的字符,每次读取新字符后,判断当前字符和上一次字符是否都是'\n'——如果满足这个条件,就终止循环。

修改后的代码实现

#include <stdio.h>

int main() {
    char ch;
    char prev_ch = 0; // 初始化前一个字符为非换行值,避免初始误触发

    while (1) {
        scanf("%c", &ch);
        
        // 判断连续两次输入回车,终止循环
        if (ch == '\n' && prev_ch == '\n') {
            break;
        }
        
        prev_ch = ch; // 更新前一个字符为当前字符,用于下一次判断
    }
    return 0;
}

代码逻辑解释

  1. 状态记录:用prev_ch存储上一次读取的字符,初始值设为0(肯定不是'\n',防止程序一开始就误终止)。
  2. 终止条件判断:每次读取新字符后,检查当前字符ch和prev_ch是否都是'\n'——如果是,说明用户连续按了两次回车,直接跳出循环。
  3. 状态更新:如果不满足终止条件,就把当前字符赋值给prev_ch,继续下一轮循环。

可选优化:用fgetc替代scanf

如果你想更好地处理输入流的特殊情况(比如用户输入EOF,即按Ctrl+D),可以用fgetc(stdin)代替scanf,代码如下:

#include <stdio.h>

int main() {
    int ch; // 用int存储fgetc返回值,因为EOF是int类型
    int prev_ch = 0;

    while (1) {
        ch = fgetc(stdin);
        
        if (ch == '\n' && prev_ch == '\n') {
            break;
        }
        
        prev_ch = ch;
    }
    return 0;
}

注意点

你原来代码里的ch == ''是错误的写法:C语言中没有空字符串的字符表示,回车键对应的ASCII字符是'\n',我们需要判断的是这个字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 08:29:04