【问题标题】:C if condition not working as expectedC 如果条件未按预期工作
【发布时间】:2009-09-20 12:00:13
【问题描述】:

全部,

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

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

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

问题是第一个 printf 在控制台“BG01”中返回,但由于某种原因,IF 条件没有对其进行处理,并且第二个 printf 永远不会被执行。

这张图有什么问题?

谢谢, 去

【问题讨论】:

    标签: c syntax


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • OP 说“我来自 java 和 php 世界”,所以我得出结论认为.equals() 的知识将是一个有效的假设。
      • 是的,我只是不确定如何在 C 中攻击它。谢谢 Greg,效果很好。
      • 哎呀,对不起,格雷格,我应该更多地关注 OP。
      猜你喜欢
      • 2016-08-26
      • 1970-01-01
      • 2015-09-01
      • 2021-12-13
      • 2014-01-07
      • 1970-01-01
      • 2015-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多