如何分别处理字符串中的每个字符?
问题描述:
我想运行一个单词比较程序,但我无法停止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'
。
答
当您使用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]);
是什么类型的A,L和M?同时举一个你正试图解决的问题的更好的例子。 – trumpetlicks
你的消息以空格字符开始,并且与你的单词'a'不匹配。你可能想检查你的代码跳过空格!我不确定我是否正确地解决了您的问题! – saeedn