【发布时间】:2012-12-03 20:59:17
【问题描述】:
我的程序中有一个函数,它应该接受莫尔斯电码输入,将其与字符串数组进行比较,并在找到匹配的莫尔斯电码后从相应字符串中返回一个字母。我终于设法让它运行而不会崩溃,但现在它总是返回错误的字母。例如 ... --- ... 应该返回 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;
}
感谢您的帮助。
编辑:对不起,这是整个功能。
【问题讨论】:
-
向我们展示
letter的声明和定义。听起来可能是char,在这种情况下,您对strcmp的调用是错误的。你的警告级别调高了吗?您是否忽略了任何警告? -
是的,问题显然出在字符串比较上……数十万程序员已经使用了数百万次没有问题的函数。阅读《编程第一法则》:codinghorror.com/blog/2008/03/…
-
我的意思是我认为我可能用错了。我还在学习中,我希望更有经验的眼睛能帮助我找到问题。不过,谢谢您的礼貌回应。