2013-10-30 55 views
0

我想創建一個有趣的程序展示給我的一個朋友。不要吝嗇,我是初學者,有一點小問題。事情是我想讓程序掃描一個單詞,如果一個單詞是我的朋友名字「Bob」,那麼它會打印「noob」,否則它會打印「專業版」。如果「單詞」然後打印一些東西

這就是我所做的,但似乎沒有工作。它指出等號==有問題。幫助,夥計們。這是我的編碼。

#include <stdio.h> 

int main() 
{ 
    char x; 

    printf("Enter the noob's name: "); 
    scanf(" %c", &x); 

    if (x == "Bob") 
     printf("noob\n"); 
    else 
     printf("pro\n"); 

    return 0; 
} 
+0

我想你必須使用[strcmp](http://www.cplusplus.com/reference/cstring/strcmp/)比較兩個字符串。 –

+0

'x'不是一個字符串。這是個'char'。請閱讀C的初學者教程。 –

回答

3

嘗試這樣的:

#include <stdio.h> 
#include <string.h> 

int main() 
{ 
    char x[30]; 

    printf("Enter the noob's name: "); 
    scanf(" %s",x); 

    if (strcmp(x,"Bob")==0) 
     printf("noob\n"); 
    else 
     printf("pro\n"); 

    return 0; 
} 
2

有代碼中的幾個誤區:

首先,char x;聲明一個變量,x只能容納一個字符。所以,你可能想要聲明一個更大尺寸的字符數組。

char x[100]; //choose a size 

其次,==字符串比較是不允許C.你應該這樣做:

if(strcmp(x, "Bob") == 0) 

要使用strcmp需要#include <string.h>

我也會用fgets到READ C建議字符串而不是scanf

0

由於這不是一項家庭作業,您可能需要嘗試使用C++。 例如下面的代碼可能會有點那麼嚇人(或沒有):

#include <iostream> 
#include <string> 
using namespace std; 

int main() { 
    string name; 
    cout << "Please enter your name." << endl; 
    cin >> name; 
    if (name=="bob") { 
    cout << "Hello noob" << endl; 
    } else { 
    cout << "Hello " << name << endl; 
    } 
    return 0; 
} 
0

首先,你需要把[256] char x後,所以你指定多大的字符串be.Second的scanf函數scanf(" %c", &x);變化到scanf("%s,x);,因爲%s用於讀取字符串。然後最後放入if (strcmp(x,"Bob")==0)而不是if (x == "Bob"),因爲這不是檢查用戶輸入的正確方法。同樣的事情發生在我身上,繼承人鏈接if statement not working ends program immediately

相關問題