我现在很生气当第二个字符串中的字符可以以某种方式创建第一个字符串时,我需要将一个字符串与第二个字符串进行比较。例



foo1 =帐单

foo2 = boril

foo2可以创建foo1,因为它包含foo1中的所有字母。



所以有我的程序:

秘密=宗教

猜字母=宗教信仰

for(i = 0; i < lenSecret; i++){
    for(l = 0; l < lenGuessed; l++)
        printf("A: %c, B: %c, C: %d\n", secret[i], lettersGuessed[l], count);
        if(secret[i] == lettersGuessed[l]){
            printf("HI\n");
            count++;
            break;
        }
        printf("C: %d\n", count);
}


但是变量计数始终保持为0。这是从控制台输出的:

http://pastebin.com/YrHiNLNi

从一开始就可以看到,当if中的secret [i] == lettersGuessed [l]返回true(1)时,它返回false(0)。这怎么了为什么不起作用?

最佳答案

这是因为第二个for循环后没有花括号。如果您不包装要用花括号迭代的代码块,则仅执行遇到的第一个分号之前的代码。在这种情况下,您的第二个循环将遍历printf语句,但仅此而已。因此,当执行if语句并且第一个单词的字母与第二个单词的最后一个字母都不匹配时,变量l将始终等于lenGuessed。因此,计数永远不会增加。

关于c - C-即使他应该进入也不会进入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23092556/

10-13 05:36