C - 即使他应该进入也不进入

Mat*_*Mak -1 c if-statement compare char

我现在很生气.我需要比较一个字符串和第二个字符串,当第二个字符串的字符可以以某种方式创建第一个字符串.例


foo1 =账单

foo2 = boril

foo2可以创建foo1,因为它包含来自foo1的所有字母.


所以这是我的计划:

秘密=宗教

lettersGuessed = religonvpst

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);
}
Run Code Online (Sandbox Code Playgroud)

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

http://pastebin.com/YrHiNLNi

正如你从头开始看到的那样,当secret [i] == lettersGuessed [l] in if应该返回true(1)时,它返回false(0).这有什么问题?为什么它不起作用?

Nat*_*ate 7

这是因为在你的第二个for循环后你没有花括号.如果不包含要用花括号迭代的代码块,则只会执行遇到第一个分号前的代码.在这种情况下,你的第二个循环将迭代printf语句,但没有别的.因此,当执行if语句并且第一个单词中没有字母与第二个单词的最后一个字母匹配时,变量l将始终等于lenGuessed,因此count永远不会递增.