2015-02-11 141 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)