C语言 将字符串与 if 条件进行比较



我正在使用if条件比较字符串,但第二个if条件失败。在这些比较情况下,失败的原因是什么,编译器级别会发生什么?

char *c = "test";
char a[] = "test";
if(c=="test")
{
printf("Hain");
if(a=="test")
printf("Byen");
}

在第一次比较中,您应该收到警告:

警告:未指定与字符串文本的比较结果

但是它返回true因为您正在比较两个指向字符串文字的指针,据我所知,女巫总是相同的。 采用以下代码:

#include <stdio.h>
#include <string.h>
int main(void) {
char *c = "test";
char a[] = "test";
printf("%pn%pn%p", c, a, "test");
}

结果将是:

0x4005f4

0x7ffedb3caaf3

0x4005f4

如您所见,指针确实相同。

也就是说,==C 中不用于比较字符串,您应该使用strcmp().

#include <stdio.h>
#include <string.h>
int main(void) {
char *c = "test";
char a[] = "test";
if(!strcmp(c, "test"))
{
printf("Hain");
if(!strcmp(a, "test"))
printf("Byen");
}
}

相关内容

  • 没有找到相关文章

最新更新