2015-07-05 79 views
-3

我正在通過一些在線教程。我無法弄清楚爲什麼IF選擇陳述不會工作?選擇聲明IF將無法工作?

#include <stdio.h> 

int main(){ 
    char namedata[50], names; 
    int n; 
    printf("Enter Number of family members being enter into program \n"); 
    scanf("%d", &n); 
    for (names=0; names<n; ++names) 
    { 

     printf("Enter family member name:\n"); 
     scanf("%s", &namedata); 
     printf("name:"); 
     puts(namedata); 

    } 
    if (namedata = john) 
    { 
     prinf("john is cool"); 
    } 
    return 0; 
} 
+2

你有一個錯字;你將'namedata'設置爲'john'的值,而不是比較它們('==')。 –

+0

也應該使用字符串值('「john」'),而不是對象名稱('john')。 – wilcroft

+2

變量'names'應該是'int'而不是'char'。 – Wazaaaap

回答

2

在有你的代碼是不同的問題:

  • scanf不確定的行爲一個邀請,因爲你不限制字符閱讀的數量。如果用戶輸入超過49個字符會怎麼樣?
  • 總是檢查scanf的結果。
  • names必須是int
  • john應該是"john"
  • 供參考:比較運算符爲==,而不是=。你的編譯器實際上應該抱怨!如果沒有,請啓用警告並使用-std=c99(gcc)進行編譯。

主要問題:你不能在C.使用strcmp比較喜歡的字符串 - 只有當字符串是安全的,否則使用更安全的版本之一。

對於scanf使用格式說明符%49s將輸入限制爲有效範圍。

0

namedata是一個字符數組(可以稱之爲字符串),並將它與名爲john的字符串進行比較。首先john是一個字符串,所以你不能直接寫它,它應該與: - 「」雙引號,Ans其次在c中,如果它返回0,則不能直接比較是否存在稱爲strcmp()的內置函數,那麼字符串是相等的。 它需要兩個字符串作爲你需要比較的參數。 你可以學習更多關於它 - LINK: - strcmp

一件事是%s不採取固定尺寸,以便使用( 「%S」,字符數組名),不喜歡( 「%S」,&字符數組名稱),請勿使用&運算符與%s。

+0

我想我理解strcmp(),但是我沒有看到如何使用它來比較用戶輸入??例如,如果輸入的名稱是john,那麼它將打印john很酷...... –

+0

如果(strcmp(namedata,「john」)== 0) { prinf(「john is cool」); }我希望這可以滿足你。快樂編碼;-) –