我的程序中有一个函数应该接受摩尔斯电码输入,将其与字符串数组进行比较,并在找到匹配的摩尔斯电码后从相应的字符串中返回一个字母。我终于设法让它运行而不会崩溃,但现在它总是返回错误的字母。例如 ... --- ... 应该返回 sos 但我得到的是 amb。我尝试通过打印索引号、莫尔斯电码字符串和字母来测试它,它们都匹配了,所以我认为问题出在字符串比较上。
这是代码:
void morsetotext(char mor[])
{
char alpha[]={"abcdefghijklmnopqrstuvwxyz1234567890 "};
char *morse[] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....",
"..", ".---","-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.",
"...", "-", "..-", "...-",".--", "-..-", "-.--", "--.","-----", ".----",
"..---", "...--", "....-",".....", "-....", "--...", "---..", "----." "/ "};
char letter[8];
char convert[250];
int con_count=0;
int let_count=0;
int count=0;
int index=0;
int length=strlen(mor);
while (count<length)
{
for(let_count=0; let_count<8 && mor[count]!=' '; let_count++)
{
letter[let_count]=mor[count];
count++;
}
letter[let_count+1]='\0';
index=0;
while (strcmp (letter, morse[index])!=1)
{
index++;
}
count++;
printf ("%c", alpha[index]);
}
return;
}
谢谢你的帮助。
编辑:对不起,这是整个功能。