strcmp 和双相等关系运算符在 C 中不起作用

strcmp and double equal relational operator not working in C

在 C 中使用以下程序,字符串比较不起作用:

#include<stdio.h>
#include<string.h>
int main(){
    char ch[]="ABC";
    printf("%d \n", strlen(ch));    // output 3
    printf("%d \n", strlen("ABC")); // output 3
    if(strcmp("ABC",ch)){
        printf("\n Matched");
    }else{
        printf("\n Not matched"); // this will be output
    }

    if("ABC" == ch){
        printf("\n Matched");
    }else{
        printf("\n Not matched"); // this will be output
    }
}//ends main

输出是:

3

3

 Not matched

 Not matched

为什么字符串不匹配?

使用 "ABC" == ch 比较两个 指针 ,您不比较指针指向的内容。而且这两个指针永远不会相等。

strcmp 函数 returns zero 如果字符串相等。零在C中被认为是"false",所有非零值都是"true".


C 中的字符串文字实际上是(只读)字符数组,包括终止符。与所有数组一样,当它们在大多数表达式中使用时,它们会衰减为指向其第一个元素的指针。

如果你把双引号改成单引号就可以了:"ABC"到'ABC'