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

C语言摩尔斯电码解码器如何避免每打印一个字符就换行?

问题原因

你当前输出每个字符自动换行的核心原因是使用了puts()函数:该函数输出指定字符串后,会默认在末尾追加一个换行符\n,因此每个解析出来的字母都会单独占一行。

修复方案

将匹配成功后的输出语句替换为不自动追加换行的printf()即可,修改方式如下:

  1. 把if (!strcmp(segment, table[i].morse)) puts(table[i].letter);替换为if (!strcmp(segment, table[i].morse)) printf("%s", table[i].letter);
  2. 所有字符输出完成后,如果需要在整行结果末尾补一个换行,可以在while循环结束后新增一行putchar('\n');
  3. 补充原代码末尾遗漏的return 0;,避免编译警告。

修改后的核心代码片段

while(segment){
    for(i = 0; i < 37; i++){
        if (!strcmp(segment, table[i].morse)) {
            printf("%s", table[i].letter);
        }
    }
    segment = strtok(NULL, " ");
}
putchar('\n'); // 整行输出结束后补换行
return 0;

修改后输入... --- ...就会输出你期望的SOS效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:06:01