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)
您无法比较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()
.