c - C 中的 If 语句总是返回 false

标签 c if-statement strcmp c-strings

<分区>

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

if 语句应该比较两个变量,它们都包含字符串,我什至打印了两个变量以确保它们相同,但是它仍然直接跳到 if 语句的 else 部分。任何人都可以告诉我为什么它不会运行 if 语句,它只是直接跳到“不正确”。

correctWord 变量在代码的不同部分定义。

查找完整代码 here .

-更新-

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

Output screen

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");
    }
}

最佳答案

不能在 C 中使用 == 比较字符串,因为这比较的是字符串的地址,而不是字符串的内容。 (你当然不需要,显然,两个字符串的地址也不相等。)

C 有一个非常好的函数: strcmp() 返回 0如果两个字符串相等。

尝试在您的 if 中使用它条件:

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

一定要#include <string.h>使用前 strcmp() .

关于c - C 中的 If 语句总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29699615/

相关文章:

使用 POSIX 系统调用比较 2 个文件

c++ - C++ 中的 if 语句行为真的很奇怪

Java 8 可选而不是 if

java - 确认Java ArrayList包含特定值

c - 自己的strcmp函数——非标准字符

c - 我怎样才能比较两个字符串不止一个字符?

c - c中的strcmp字符串和字符数组

c++ - 运算符 += 中 '+' 和 '=' 之间的空格

C语言从文件读取到char数组

c - C 中使用 %p 的变量地址