如何分别处理字符串中的每个字符?

问题描述:

我想运行一个单词比较程序,但我无法停止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

是什么类型的A,L和M?同时举一个你正试图解决的问题的更好的例子。 – trumpetlicks

+0

你的消息以空格字符开始,并且与你的单词'a'不匹配。你可能想检查你的代码跳过空格!我不确定我是否正确地解决了您的问题! – saeedn

当您使用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]);