C如果条件不按预期工作

时间:2009-09-20 12:00:13

标签: c syntax

所有

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

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

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

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

这张照片出了什么问题?

谢谢, 专家组

2 个答案:

答案 0 :(得分:12)

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

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

答案 1 :(得分:8)

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

if (strcmp(data[0], "BG01") == 0) ...