【发布时间】:2011-07-06 22:34:39
【问题描述】:
谢谢!现在完美运行。 Java让我变得愚蠢:(
我在比较 C 中的字符串时遇到了一些困难。当我不使用我的 isMorse 函数时,我得到了正确的输出,但是当我使用它时,输出变得不准确并显示随机字符。据我所知,变量“morse”实际上在调用 strcmp 时发生了变化。我认为这与“莫尔斯”不是一个常数有关,但我不确定如何补救。
谢谢!!
char *EnglishToMorse(char english)
{
static char *morse;
int i;
for (i = 0; i < LOOKUP_SIZE; i++)
{
if (lookup[i].character == english)
{
morse = lookup[i].morse;
return morse;
}
}
morse = &english; // Problem was here!!!
return morse;
}
【问题讨论】:
-
您说“输出变得不准确”,但您的示例代码没有任何输出语句。请发布一个简短、完整、可运行的示例来演示您所看到的行为(不要忘记提及您期望看到的内容)。
-
你确定
EnglishToMorse正在返回一个以 NULL 结尾的字符串吗? -
strcmp(const char*, const char*) 不应该改变你的莫尔斯变量
-
lookup数组是什么?注意空格(空格、制表符、换行符):"---"与"---\n"或"--- "不同。
标签: c string string-comparison