2013-03-07 3 views
1

Я совершенно не знаком с программированием.Если оператор с строкой

Я просто хочу, чтобы ввести в Дэйва, то он должен показать «иметь хороший день»

Так я пишу это таким образом:

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

В конце концов, он ничего не показывает. Что с этим не так?

+3

Сначала вы назначаете и не сравнивать (= вместо ==), второй вы не можете сравните строку с оператором == (для указателей вы сравниваете адрес, а не контент) –

+1

@ShashankKadne нет, он не – SomeWittyUsername

+0

@Dugarry Я бы настоятельно советовал вам узнать, как работают массивы указателей, до att empting string handling, поскольку обработка строк в C в значительной степени зависит от массивов и указателей. (Одна из многих причин, почему C не может быть идеальным для начинающих программистов. Лично я бы рекомендовал Java в качестве первого языка программирования) – Lundin

ответ

7

Ваш код назначает str, чтобы указать на строковый литерал "Dave". Я думаю, вы хотели сравнить (используя ==) вместо этого? Это также потерпело бы неудачу, сравнивая адреса двух массивов char. В C, вы должны использовать strcmp для сравнения строк

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

Сравнение строк в C может быть сделано путем 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

+0

#include melvynkim

Смежные вопросы