2013-03-07 61 views
1

我對編程完全陌生。如果語句帶字符串

我只需要輸入戴夫的話,就應顯示「有一個愉快的一天」

所以我把它寫在這樣:

{ 
    char str[100]; 
    printf("\nwhat is your name?\n"); 
    scanf("%s",str); 
    if (str="Dave") 
    { 
     printf("\nhave a nice day\n"); 
     } 
    } 

最終,它說明不了什麼。它出什麼問題了?

+3

首先,你指定你不比較(=的==代替),第二你不能比較==操作符字符串(對於指針你比較地址,而不是內容) – 2013-03-07 08:26:13

+1

@ShashankKadne沒有,他不 – SomeWittyUsername 2013-03-07 08:26:39

+0

@Dugarry我會強烈建議你學會如何陣列的指針工作,ATT之前使用字符串處理,因爲C中的字符串處理嚴重依賴於數組和指針。 (爲什麼C可能不適合初學程序員的理由之一,就我個人而言,我會推薦Java作爲第一編程語言) – Lundin 2013-03-07 08:29:59

回答

7

您的代碼分配str指向字符串字面"Dave"。我想你的意思是比較(使用==)呢?這也會失敗,比較兩個char陣列的地址。在C語言中,你應該使用strcmp比較字符串

在C
if (strcmp(str, "Dave") == 0) 
1

字符串比較可以通過strcmp()#include <string.h>

if (strcmp(str,"Dave")==0) 
    { 
     printf("\nhave a nice day\n"); 
     } 
2

字符串比較來實現需要的庫函數。更換

if (str="Dave") 

if(strcmp(str, "Dave") == 0) 

,並在年初,包括

#include<string.h> 
+3

'#include '? NO – SomeWittyUsername 2013-03-07 08:28:29

+0

#include melvynkim 2013-03-07 08:34:39