【问题标题】:Why doesn't a string called by a function equal the string held in a command argument vector even though they ar the same [duplicate]为什么函数调用的字符串不等于命令参数向量中保存的字符串,即使它们相同[重复]
【发布时间】:2021-08-23 04:54:05
【问题描述】:

我的代码如下: if (array[i].name == name)

Array.name 由 argc 分配,然后 name 由用户输入。我使用调试器检查了这些值,在点击这个 if 命令之前,array[i].name = Joe 和 name = Joe。

但是 if 函数没有运行……我迷路了。我所看到的一切都表明这两个字符串包含相同的单词,那么为什么 if 命令不能识别呢?

【问题讨论】:

  • 如果我正确理解您的问题,您想比较两个字符串,但这不是您在 C 中比较字符串的方式。例如,您可以使用 strcmp()
  • 您要比较的是内存地址。您需要一个函数来遍历字符串并逐个字符地比较它们。
  • 这能回答你的问题吗? How do I properly compare strings in C?

标签: c


【解决方案1】:

你不能像这样比较 C 中的字符串。 正如保罗鲁尼在评论中所说,

您需要一个函数来遍历字符串并比较它们 逐个字符。

因此,您可以创建自己的函数来遍历字符串并逐个字符地比较它们,或者您可以使用strcmp() 来比较字符串。下面是使用strcmp()比较字符串的方法:

if(strcmp(array[i].name,name)==0){
//do something if the strings are equal
}

注意:

strcmp() 返回一个表示比较结果的整数, 如下:

• 0,如果 s1 和 s2 相等;

• 如果 s1 小于 s2,则为负值;

• 如果 s1 大于 s2,则为正值。

【讨论】:

    猜你喜欢
    • 2020-09-24
    • 2018-12-11
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    • 2014-12-11
    • 2021-12-13
    相关资源
    最近更新 更多