如果C中的语句总是返回false

Tob*_*non 0 c if-statement c-strings strcmp

我是C的新手,所以我不太熟悉它的语法,但是我调试了我的代码并研究了正确的语法,它似乎是正确的,我也改变了变量的范围,看看这是不是导致错误.

if语句应该比较两个变量,它们都保存字符串,我甚至打印出两个变量以确保它们是相同的,但是它仍然直接跳到if语句的else部分.任何人都可以给我任何关于为什么它不会运行if语句的指针,它只是直接跳到'不正确'.

correctWord变量在代码中的一个不同的部分中定义.

在此查找完整代码.

-UPDATE-

我现在已经更新了代码的语法,但它仍然返回false.

输出屏幕

char correctWord[20];

void userGuess(){
    char userWordGuess[20];

    printf("Anagram: ");
    printf(anagramWord);
    printf("Your Guess: ");
    scanf("%s",userWordGuess); //Reads in user input

    printf(correctWord);
    printf(userWordGuess);

    if(strcmp(userWordGuess, correctWord) == 0){
        printf("Congratulations, you guessed correctly!");
    }else{
        printf("Incorrect, try again or skip this question");
    }
}
Run Code Online (Sandbox Code Playgroud)

sha*_*ats 6

无法比较C中的字符串==,因为这会比较字符串的地址,而不是字符串的内容.(你当然不需要,显然,两个字符串的地址也不相等.)

C有一个相当不错的函数:如果两个字符串相等则strcmp()返回0.

在你的if条件下尝试使用它:

if (!strcmp(userWordGuess,correctWord))
{
     //Yay! Strings are equal. Do what you want to here.
}
Run Code Online (Sandbox Code Playgroud)

务必#include <string.h>在使用之前strcmp().