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

如何比较字符串数组中的特定字符串?C语言代码问题求助

你的C语言字符串问题分析与解决

问题1:数组下标越界

你定义的char names[1][5];是一个仅包含1个字符串元素的二维数组,C语言数组下标从0开始,所以唯一有效的元素是names[0]。names[1]已经超出数组的有效范围,会触发未定义行为(程序崩溃、数据错乱等),这是代码无法正常运行的第一个原因。

问题2:字符串比较方式错误

C语言中,==用于指针比较时,判断的是两个指针指向的内存地址是否相同,而非字符串内容是否一致。字符串字面量"Welp"存储在常量数据区,而names数组存储在栈上,两者地址必然不同,所以names[1] == "Welp"永远为假。

要比较字符串的实际内容,必须使用标准库函数strcmp(需包含头文件<string.h>)。

修正后的代码

#include <stdio.h>
#include <string.h>

int main() {
    char names[1][5];
    // 使用合法的数组索引0
    strcpy(names[0], "Welp");
    // strcmp返回0表示两个字符串内容完全相等
    if (strcmp(names[0], "Welp") == 0) {
        printf("alright works\n");
    }
    return 0;
}

strcmp函数说明

strcmp(a, b)会逐字符对比两个字符串的ASCII值:

  • 返回值 < 0:a的字典序小于b
  • 返回值 = 0:a和b内容完全一致
  • 返回值 > 0:a的字典序大于b

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 12:39:56