我在程序中有一個函數,它應該採用莫爾斯碼輸入,將它與字符串數組進行比較,並在找到匹配的莫爾斯後從對應字符串返回一個字母。我終於設法讓它在沒有崩潰的情況下運行,但現在它不斷返回錯誤的字母。例如...... --- ...應該返回sos,但是我得到了amb。我試圖通過打印索引號,莫爾斯碼字符串和字母來測試它,並且它們都匹配起來,所以我認爲問題在於字符串比較。字符串比較不能在C中工作
下面的代碼:
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;
}
感謝您的幫助。
編輯:對不起,這是整個功能。
向我們展示'letter'的聲明和定義。聽起來它可能是一個'char',在這種情況下,你對'strcmp'的調用是錯誤的。你有警告級別嗎?你是否忽略了任何警告? –
是的,問題很明顯,字符串比較......數百萬程序員使用數百萬次而沒有問題的函數。閱讀「編程的第一條規則」:http://www.codinghorror.com/blog/2008/03/the-first-rule-of-programming-its-always-your-fault.html – abelenky
我的意思是我認爲我可能會錯誤地使用它。我還在學習,我希望有更多經驗的眼睛幫助我找到問題。謝謝你,禮貌的迴應。 – user1827962