2015-02-11 137 views
0

我要检查,如果用户输入等于某个值检查是否变量是一定值

#include <stdio.h> 
#include <windows.h> 

int main() 
{ 
    SetConsoleOutputCP(1252); 
    SetConsoleCP(1252); 

    char meningen[100]; 



    printf("Hello \n"); 
    printf("I want you to write 'Simon Anderson'.\n"); 

    scanf(" %[^\n]s", meningen); 
     if (meningen == "Simon Anderson") 
     { 
      printf("Congratilation. You have won the game.\n"); 
      printf("Have a good day"); 

     } 
     else { 
      printf("You failed.\n"); 

     } 
    getchar(); 
    getchar(); 
    return 0; 
} 

的问题是什么我写我还得到了“你没有”打印出来。我如何做到这一点,如果用户在if语句中写入值,它会返回true。

谢谢

回答

1
if (meningen == "Simon Anderson") 

应该

if (strcmp(meningen,"Simon Anderson") ==0) 

我建议你使用

fgets(meningen,sizeof(meningen),stdin); 

代替scanf()的为fgets()照顾缓冲区溢出,并发出请注意,fgets()附带换行符。您需要删除换行符,如下所示。

size_t n = strlen(meningen); 
if(n>0 && a[n-1] == '\n') 
a[n-1] = '\0'; 
0

这是行不通的,因为你与==比较字符串:

scanf(" %[^\n]s", meningen); 
if (meningen == "Simon Anderson") 

这是比较的地址meningen阵列,而不是值(一个或多个),它包含的内容。要检查该阵列的内容,应该使用strcmp()函数代替:

scanf(" %[^\n]s", meningen); 
if (strcmp(meningen, "Simon Anderson") == 0)