如何解释用于字符串尾词验证的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
相关产品推荐
相关产品推荐

