C语言中的摩尔斯电码

问题描述 投票:0回答:1

我有一个功能,将用户输入的文本(它也翻译数字)转换为摩尔斯电码,但我不明白为什么包含莫尔斯电码字母表的数组:m [37] [10]是一个二维数组?据我所知,37是由字母,数字和空格的数量,共计37,但为什么10?

这是我的代码:

void textoMorse(){
    int i,j;
    char texto[37] = {
        '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 m[37][10]={
        {".-,"}, {"-...,"}, {"-.-.,"}, {"-..,"}, {".,"}, {"..-.,"},
        {"--.,"}, {"....,"}, {"..,"}, {".---,"}, {"-.-,"}, {".-..,"},
        {"--,"}, {"-.,"}, {"---,"}, {".--.,"}, {"--.-,"}, {".-.,"}, 
        {"...,"}, {"-,"}, {"..-,"}, {"...-,"}, {".--,"}, {"-..-,"},
        {"-.--,"}, {"--..,"}, {".----,"}, {"..---,"}, {"...--,"}, 
        {"....-,"}, {".....,"}, {"-....,"}, {"--...,"}, {"---..,"}, 
        {"---.,"}, {"-----,"}, {"//"}
    };
    char frase[1000];
    gets(frase);
    fflush(stdin);
    for(i=0; frase!='\0'; i++){
        for(j=0; j<37; j++){
            if(frase[i] == texto[j]){
                printf("%s",m[j]);
            }
        }
    }
}
c arrays multidimensional-array encoder
1个回答
1
投票

m是一个二维数组。可以把它想象成37行,每行10个字符。 C字符串在每一行中编码,并由您未看到的\0字符隐式终止。例如,{".....,"}行包含5个'.'字符,1个'.'字符和'\0'终止字符。默认情况下,该行中剩余的3个字节以'\0'字符填充。

© www.soinside.com 2019 - 2024. All rights reserved.