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

如何解释用于字符串尾词验证的endWord函数代码?

拆解这段字符串尾词验证的C代码

嘿,我来帮你一步步搞懂这段代码的逻辑,它其实就是个简洁的字符串结尾匹配工具:

函数整体说明

这是一个名为endWord的C语言函数,作用是检查input字符串是否以correctWord结尾:

  • 接收两个参数:input(待检查的目标字符串)、correctWord(要验证的结尾关键词)
  • 返回值:1代表匹配成功,0代表匹配失败

逐行解析逻辑

1. 边界检查:排除不可能匹配的情况

if(strlen(input) < strlen(correctWord)) return 0;
  • strlen()是C标准库函数,用来计算字符串的长度(不包含末尾的终止符\0)
  • 如果待检查的input长度比correctWord还短,那它根本不可能以correctWord结尾,直接返回0(不匹配),避免后续无效操作

2. 核心匹配逻辑

进入else分支,说明input长度足够,接下来做精准匹配:

if(strcmp(input + (strlen(input) - strlen(correctWord)), correctWord) == 0) return 1;
else return 0;

这里的关键是理解C语言中数组名等价于指针的特性:

  • strlen(input) - strlen(correctWord):计算出correctWord在input中应该起始的位置偏移量
  • input + 偏移量:相当于把指针从input的开头,移动到「input末尾往前数correctWord长度」的位置,这个位置就是correctWord如果是结尾的话应该开始的地方
  • strcmp()是C标准库的字符串比较函数:如果两个字符串完全相同,返回0;否则返回非0值
  • 所以如果这个子字符串和correctWord相等,就返回1(匹配成功),反之返回0

举个实际例子

比如:

  • input = "I love programming"(长度18)
  • correctWord = "programming"(长度11)
  • 偏移量 = 18 - 11 = 7
  • input + 7指向的子字符串就是"programming",和correctWord完全一致,所以函数返回1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:48:55