如何用getchar检测连续三次空格并替换为换行?
解决方案
这个问题我之前也碰到过,核心是你现在的代码只处理了单个空格,没有跟踪连续空格的累计数量。要实现连续三个空格替换为换行,我们需要一个计数器来记录当前连续空格的个数,然后根据不同情况处理:
具体思路
- 初始化一个计数器,用来统计当前连续空格的数量
- 循环读取每个输入字符:
- 当读到空格时,计数器加1;如果计数器达到3,就输出换行符并重置计数器
- 当读到非空格字符时:先把之前累计的1-2个空格输出(因为只有累计到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
相关产品推荐
相关产品推荐

