私のプログラムには、モールス信号の入力を受け取り、それを文字列の配列と比較し、一致するモールス信号が見つかったら、対応する文字列から文字を返す関数があります。ようやくクラッシュすることなく実行できるようになりましたが、今では間違った文字が返され続けています。たとえば...---... 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;
}
助けてくれてありがとう。
編集:申し訳ありませんが、これが関数全体です。