当前位置: 首页 > news >正文

strcmp :全称 string compare(字符串比较)

1. 主角登场:strcmp是什么?

strcmp的全称是string compare(字符串比较)。它的任务很简单,就是像查字典一样,比较两个字符串谁“大”谁“小”。

核心规则(记住这个就行):
它从左到右,一个字符一个字符地比(比的是字符的 ASCII 码值)。

  • 如果两个字符串一模一样,返回0
  • 如果字符串1 比 字符串2 “大”,返回正数(> 0)。
  • 如果字符串1 比 字符串2 “小”,返回负数(< 0)。

通俗类比:
想象你在比两个单词 "apple" 和 "banana"。
你从第一个字母开始看:'a' 和 'b'。
因为在字母表里 'a' 在 'b' 前面,所以 "apple" 比 "banana" 小。strcmp("apple", "banana")就会返回一个负数。

2. 实战:它在哪出现?

我们在上一讲qsort排序结构体时,就用到过它!

假设我们要按学生的姓名排序,姓名是字符串(char name[20]),我们不能直接做减法

name1 - name2是错的!),这时候就得请strcmp出马。

#include <string.h> strcmp 的头文件 struct Stu { char name[20]; int age; }; 按名字排序的比较函数 int cmp_stu_by_name(const void* e1, const void* e2) { 1. 先把 void* 强转成 struct Stu* 2. 取出 name 成员(它本身就是 char* 类型) 3. 交给 strcmp 去比较 return strcmp(((struct Stu*)e1)->name, ((struct Stu*)e2)->name); }

看,strcmp帮我们省去了手写循环去逐个比较字符的麻烦,非常省心。

3. 避坑指南:千万别用==比字符串!

这是新手最容易犯的错!

char str1[] = "hello"; char str2[] = "hello"; if (str1 == str2) { ... } ❌ 错误! if (strcmp(str1, str2) == 0) { ... } ✅ 正确!

为什么?

  • str1 == str2比较的是两个数组的首地址。这两个数组在内存里是不同的两块地盘,地址肯定不一样,所以结果永远是假。
  • strcmp(str1, str2)比较的是两个地址里存放的内容。内容都是 "hello",所以返回 0,表示相等。

总结一下:
strcmp,它是 C 语言里专门用来比较字符串内容的函数。记住它的返回值规则(0、正数、负数),并且永远不要用==来比较两个字符串的内容

http://www.jsqmd.com/news/1071744/

相关文章:

  • AI生成歌曲后还能继续编辑的软件有哪些
  • 能源转型背景下风光储充技术解析
  • AI写期刊论文用什么工具?5款主流AI论文写作实测对比期刊论文写作的痛点
  • 有智青年挑战赛决赛在穗举行,15支队伍角逐AI+场景应用大奖共筑科创生态
  • ATAES132硬件加密芯片接口与状态寄存器实战指南
  • AI写歌软件怎么选?从灵感生成到成品发行的工具实测
  • 云克隆助力德国团队在Nature上发表靶向降钙素原改善脓毒症的科研成果
  • 布局谷歌GEO前,出海企业可以了解的几个关键环节
  • 2026 年行业招聘数据与薪酬报告
  • AT86RF233无线MCU帧缓冲区、功耗与时钟配置实战指南
  • Luxport 3.0技术解读:在成熟架构之上增强智能决策能力
  • 代理GEO优化利润空间怎么样
  • Python MD5 订单指纹防重校验|解决批量代购重复下单,北极星分销后台生产代码
  • GitHub Actions工件管理终极指南:从基础到企业级架构设计
  • 万能去水印神器,免费get!
  • AT90PWM2/3 ADC实战:从配置到精度优化的嵌入式电机控制指南
  • 保定输送机公司哪个靠谱
  • 基于ATA6844-DK开发板的BLDC电机六步换相控制实战指南
  • ZYGO 8070-0902-13X激光器
  • ID-CERT-010:企业授权合规技术解析
  • AI外呼系统技术演进对比:主流厂商AI外呼自主决策能力深度横评
  • 使用Saleae逻辑分析仪调试Atmel加密芯片I2C与SWI通信接口实战
  • 国内外住宿平台数据合规技术差异:从个保法落地实践到GDPR全域管控对比
  • Teemo 轻量级高性能 C++ 工具库:开箱即用的后端开发开源组件指南
  • ATmega时钟与低功耗配置实战:从熔丝位到睡眠模式
  • 以科技驱动——自动化缝制设备产业升级
  • 从 Vivado 2017.4 到 2025.2:FPGA 软硬件协同开发流程演变与全新 BSP 生成指南
  • XMEGA EBI接口SDRAM时序配置详解:从60000ms超时到稳定运行
  • ATA6289低功耗传感器接口芯片寄存器配置与SPI驱动实战指南
  • 2026最新易学入门 App 推荐:新手必看的易学排盘软件选择指南