C语言摩尔斯电码解码器如何避免每打印一个字符就换行?
问题原因
你当前输出每个字符自动换行的核心原因是使用了puts()函数:该函数输出指定字符串后,会默认在末尾追加一个换行符\n,因此每个解析出来的字母都会单独占一行。
修复方案
将匹配成功后的输出语句替换为不自动追加换行的printf()即可,修改方式如下:
- 把
if (!strcmp(segment, table[i].morse)) puts(table[i].letter);替换为if (!strcmp(segment, table[i].morse)) printf("%s", table[i].letter); - 所有字符输出完成后,如果需要在整行结果末尾补一个换行,可以在while循环结束后新增一行
putchar('\n'); - 补充原代码末尾遗漏的
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
相关产品推荐
相关产品推荐

