在C程序中,如何检查输入字符串是否是特定名称?

时间:2017-11-07 05:52:52

标签: c arrays string

#include<stdio.h>

int main(){

char name[20];

scanf(" %s", name);

if (name == 'James'){

    printf("Welcome James");
}else{

    printf("You are not James");
}

}

希望你有我的想法。我知道这不起作用。但有没有办法做这样的事情?

3 个答案:

答案 0 :(得分:2)

使用

if (strcmp(name, "James") == 0)

而不是

if (name == 'James')

strcmp的手册页:

返回值

  

strcmp()strncmp()函数返回小于的整数,   如果s1(或其前n个字节)是等于或大于零   发现分别小于,匹配或大于s2。

答案 1 :(得分:1)

尝试:strcmp()

#include<stdio.h>

int main(){

char name[20];

scanf(" %s", name);

if (strcmp(name,"James")){

    printf("Welcome James");
}else{

    printf("You are not James");
}

}

参考:How do I properly compare strings?

答案 2 :(得分:0)

在C中你必须使用cmp字符串函数:

strcmp(const char* s1, const char* s2);

返回函数值:

return value == 0 - s1 is equals s2
return value > 0 - s1 is longer than s2
return value < 0- s1 is smaller than s2

如果你写的话,这是非常的:

char name_buff[20];
if (name_buff == "James")
{
...

这并不意味着字符串的比较,而是存储器中地址的比较。 所以你必须使用strcmp()。