使用strcmp比较字符数组和字符指针

时间:2014-02-17 19:16:41

标签: c pointers

int main(void) {
    char s[] = "ab";
    char *s1 = "ab";

    if(strcmp(s, s1))
        printf("%d", 24);
    else
        printf("%d", 23);

    return EXIT_SUCCESS;
}

为什么要回答23?

4 个答案:

答案 0 :(得分:3)

这是因为strcmp如果字符串相等则返回00在C中被视为false

strcmp(string1, string2)

返回值

if Return value < 0 then it indicates string1 is less than string2

if Return value > 0 then it indicates string2 is less than string1

if Return value = 0 then it indicates string1 is equal to string2  

答案 1 :(得分:3)

如果给定的字符串相等,则

strcmp返回0,如本例所示。 0已转换为false,因此会执行else块,打印23

答案 2 :(得分:2)

strcmp成功返回0。因此if将失败。

if声明更改为

if(strcmp(s , s1) == 0)

答案 3 :(得分:2)

如果两个字符串比较相等,则

strcmp返回0.