2013-03-07 57 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