C如果条件不按预期工作

goe*_*goe 4 c syntax

所有,

我来自java和php世界所以这可能是一个因素.但我有一个问题:

printf("%s\n",data[0]);

if(data[0] == "BG01") {
    printf("%s\n",otherstring);
}
Run Code Online (Sandbox Code Playgroud)

问题是第一个printf在控制台"BG01"中返回,但由于某种原因,IF条件没有接收到它,第二个printf永远不会被执行.

这张照片出了什么问题?

谢谢,goe

Toa*_*oad 12

你现在这样做的方式是你要比较2个指针而不是它们指向的字符串.这些指针可以指向相同的值,但位于内存中非常不同的位置,因此不是真的.

这样做的方法是使用strcmp(string1,string2)函数来检查字符串本身而不是指针.


Gre*_*ill 8

在C中,你必须使用strcmp(),就像你必须.equals()在Java中使用一样:

if (strcmp(data[0], "BG01") == 0) ...
Run Code Online (Sandbox Code Playgroud)

  • OP说"我来自java和php世界"所以我得出结论,`.equals()`的知识将是一个有效的假设. (2认同)