请帮帮我一下“strcmp”

时间:2015-05-01 11:12:48

标签: c strcmp

我有一段C代码,我想在输入一些字符串时问“up”。 跳转到代码如下:(strcmp(pdirection,"up")==0)
那么,它是什么意思,我不明白==0

代码片段由参考位置调用。

2 个答案:

答案 0 :(得分:3)

来自manual

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

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

因此,如果两个字符串相等,则strcmp()返回0

==是等于运算符,它检查两边的值是否相等。让我们看看C标准的含义

<强> 6.5.9

equality-expression == relational-expression
  

3 ==(等于)和!=(不等于)运算符类似于   关系运算符除了它们的优先级较低.108)每个   如果指定的关系为真,则运算符的结果为1,如果为,则为0   这是假的。结果是int类型。对于任何一对操作数,   其中一个关系是真的。

您的代码可能是

if( strcmp(pdirection,"up") == 0 )
    do_something;

因此,如果pdirection中存储的字符串等于"up",则函数strcmp()将返回0,== 0部分检查该值是否等于0,如果它等于0,则完成do_something

答案 1 :(得分:0)

strcmp(char *str1, char *str2)返回2个字符串之间的差异。因此,如果2个字符串相等,则差值为0.

实际上,它一次扫描2个字符串一个字符,直到它达到2个不同的字符或传递一个字符串的结尾(C中字符串的最后一个字符是一个字符,其ASCII值为0,注明& #39; \ 0&#39;。)

该函数返回它在2个字符串之间遇到的第一个差异。