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'
在 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'