You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何值相同的两个字符串用==比较不成立,其一来自命令行参数

问题根因

你代码里的==运算符不能用来判断C语言字符串内容是否相等。
C语言中的字符串本质是char *类型的指针,==作用于指针时,对比的是两个指针存储的内存地址,而非指针指向的内存中存储的字符串内容:

  • 你用到的array[i].name来自命令行参数argv,程序启动时系统会单独分配内存存储命令行参数,这块内存的地址和存储用户输入的name变量指向的内存地址完全独立,所以==的判断结果永远为假,自然不会进入if分支。
  • 调试器显示两个值都是Joe,是因为调试器会主动读取指针指向的内存内容做展示,这和指针本身的地址是否相等没有关系。
修复方法

引入C标准库<string.h>头文件,使用字符串比较函数strcmp判断内容相等:

if (strcmp(array[i].name, name) == 0)

strcmp会逐字符对比两个字符串的内容,完全相等时返回值为0,此时即可正确触发if分支。

内容的提问来源于stack exchange,提问作者willyclub

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 21:15:00