0

我正在尝试运行一个单词比较程序,但我无法阻止 for 循环以某种方式添加到我要比较的字符中。

for(m = 0; m < wordSize; ++m)
{
    a = l + m + 1;
    if(word[m] != message[a])
    {
        printf("Falsified by not word match: message[%d] = '%s' and '%s'\n", a, (char *)&message[a], (char *)&word[m]);
        i = 0;
    }
}

这给了我一些Falsified by not word match: message[1] = ' a a a' and 'a'信息,如果消息是'a a a'并且匹配的单词是'a'

4

1 回答 1

0

当您使用print()并传递一个字符串时%s,您将看到字符串中的所有内容,直到字符串结尾。字符串的结尾标有“NUL”字符,ASCII 0。在 C 中,这是\0.

您正在查看字符,但随后您的错误消息正在打印字符串,并且打印的内容超出了您的预期。

要使其仅打印不同的字符,请使用%c格式代码,如下所示:

printf("Falsified by not word match: message[%d] = '%c' and '%c'\n", a, message[a], word[m]);
于 2013-02-05T07:30:42.457 回答