2016-03-16 170 views
-1

我是C程序設計新手。你能告訴我,我的代碼有什麼問題嗎?它看起來像if聲明不起作用,而是跳轉並打印else聲明。所有的if語句不起作用的字符串比較

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    char profession; 

    printf("what is your profession? \n"); 
    scanf(" %s", profession); 

    if(profession==「QA」) 
    { 
     printf(「Go and Test\n「); 
    } 
    else 
    { 
     printf("Do whatever you want"); 
    } 

    return 0; 
} 
+1

不能 - 不能比較這樣的以null結尾的char數組。這也是一個多重複制。 –

+0

我仍然困惑。像我應該在哪裏做出改變? – Sus

+0

你有多個錯誤,顯示一些錯覺。你的編譯器應該已經警告(如果沒有,啓用警告)。請閱讀關於指針,數組和字符串的C書(以及其他)。 – Olaf

回答

0

首先,你不能比較像在使用C.或strcmp代替strncmp字符串。其次,在你的代碼中,profession是一個char,你想在其中放入一個字符串(幾個字符)。它不會工作。你可以創建一個char *(指針char)(不會忘記malloc() it)或者char [](char數組)。

0

首先,C中的字符串是字符數組,因此您必須將行業聲明爲指針,指向一組字符。因此,該陳述將如下所示:char* profession,其次,您必須使用名爲strcmp(char* a, char* b)的方法,該方法接受兩個字符指針。如果它們相等,這將返回0。我將包括答案,但我認爲有更好的方法來編寫此代碼。

int main() { 

    char* profession; 
    char* compare = "QA"; 
    printf("What is your profession?\n"); 

    scanf(" %s", profession); 

    if(strcmp(profession, compare) == 0) { 
      printf("Go and Test\n"); 
    } else { 
      printf("Do whatever you want"); 
    } 

    return 0; 
} 
+0

謝謝您的澄清和解決方案 – Sus