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

如何用getchar检测连续三次空格并替换为换行?

解决方案

这个问题我之前也碰到过,核心是你现在的代码只处理了单个空格,没有跟踪连续空格的累计数量。要实现连续三个空格替换为换行,我们需要一个计数器来记录当前连续空格的个数,然后根据不同情况处理:

具体思路

  • 初始化一个计数器,用来统计当前连续空格的数量
  • 循环读取每个输入字符:
    1. 当读到空格时,计数器加1;如果计数器达到3,就输出换行符并重置计数器
    2. 当读到非空格字符时:先把之前累计的1-2个空格输出(因为只有累计到3个才替换成换行),再输出当前非空格字符,最后重置计数器
    3. 循环结束后,别忘了处理输入结尾可能剩余的1-2个空格

完整代码示例

#include <stdio.h>

int main() {
    int c;
    int space_count = 0; // 连续空格计数器

    while ((c = getchar()) != EOF) {
        if (c == ' ') {
            space_count++;
            // 累计到3个空格时,替换为换行并重置计数器
            if (space_count == 3) {
                putchar('\n');
                space_count = 0;
            }
        } else {
            // 先输出之前累计的不足3个的空格
            for (int i = 0; i < space_count; i++) {
                putchar(' ');
            }
            // 输出当前非空格字符
            putchar(c);
            // 重置计数器
            space_count = 0;
        }
    }

    // 处理输入结束后剩余的空格(不足3个的情况)
    for (int i = 0; i < space_count; i++) {
        putchar(' ');
    }

    return 0;
}

测试场景验证

  • 输入: Hello World!(开头三个空格)→ 输出:\nHello World!
  • 输入:Hi there how are you(中间三个空格,结尾两个空格)→ 输出:Hi\nthere how are you
  • 输入:Four spaces(四个空格)→ 输出:Four\n spaces(三个空格换换行,剩下一个保留)

这样就能完美实现你要的功能啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:48:57