如何让我的莫尔斯电码解码器停止在 C 中的每个字母后打印换行符?



原始代码来自用户abelenky。我用我目前学到的东西改变了它。我无法让我的输出停止在新行上打印。我不会把这段代码作为我自己的代码。我试图理解它,以便我可以写我自己的。

#include <stdio.h>
#include <string.h>
typedef struct{
char* morse;
char* letter;
}morse_table_t;
int main(void) {
char message[100];

printf("Enter phrase: ");
fgets(message, 100, stdin);
size_t len = strlen(message);
if (len > 0 && message[len - 1] == 'n'){
message[--len] = '';
}
morse_table_t table[] = { {".-", "A"}, {"-...", "B"}, {"-.-.", "C"}, 
{"-..", "D"}, {".", "E"}, {"..-.", "F"}, 
{"--.", "G"}, {"....", "H"}, {"..", "I"}, 
{".---", "J"}, {"-.-", "K"}, {".-..", "L"}, 
{"--", "M"}, {"-.", "N"}, {"---", "O"}, 
{".--.", "P"}, {"--.-", "Q"}, {".-.", "R"}, 
{"...", "S"}, {"-", "T"}, {"..-", "U"},
{"...-", "V"}, {".--", "W"}, {"-..-", "X"}, 
{"-.--", "Y"}, {"--..", "Z"}, {"-----", "0"},
{".----", "1"}, {"..---", "2"}, 
{"...--", "3"}, {"....-", "4"}, 
{".....", "5"}, {"-....", "6"},
{"--...", "7"}, {"---..", "8"}, 
{"----.", "9"}, {"/", "   "} };
char* segment;
int i;
segment = strtok(message, " ");
while(segment){
for(i = 0; i < 37; i++){
if (!strcmp(segment, table[i].morse)) puts(table[i].letter);
}
segment = strtok(NULL, " ");
}
return

输出:

Enter phrase: ... --- ...
S
O
S

我希望输出看起来像什么:

Enter phrase: ... --- ...
SOS

puts(table[i].letter);-->fputs(table[i].letter, stdout);.

puts()附加一个'n'

fputs()没有。

最新更新