2009-09-20 125 views
4

全部,C如果条件不能按预期工作

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

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

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

的问题是,在控制台“BG01”,但由于某些原因,如果条件不拿起它,并在第二个printf第一个printf回报永远不会被执行。

这张图片有什么问题?

感谢, 专家组

回答

8

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

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

+1,但你为什么指责随机认识java的人? ;-) – 2009-09-20 12:08:49

+2

OP说:“我来自java和php世界”,所以我总结认为'.equals()'的知识将是一个有效的假设。 – 2009-09-20 12:10:37

+0

这是,我只是不知道如何在C攻击这个。 感谢Greg,这很好。 – goe 2009-09-20 12:23:40

12

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

执行此操作的方法是使用strcmp(string1,string2)函数,它将检查字符串本身而不是指针。