K&R的书上第四章的strindex函数中,最后一个k>0判断有什么意义?
K&R的书上第四章的strindex函数,作用是计算目标字符串中第一次出现字典字符串完整内容的位置
//s为目标字符串,t为字典
int strindex(char s[], char t[])
{
int i, j, k;
for (i = 0; s[i] != '\0'; i++) {
for (j = i, k = 0; s[j] == t[k]; j++, k++)
;
if (k > 0 && t[k] == '\0') //就是这里的这个k>0的判断
return i;//找到符合的内容,返回位置
}
return -1;//-1表示未找到指定内容
}
就是if(k > 0 && t[k] == '\0')
中的这个k > 0
,按道理说只要t[]
不为空,当t[k]
为'\0'
时,k肯定是大于0的吧?那么这里的这个判断还有什么意义呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我对算法不熟悉,如果有什么常识性错误请指正。
看了一下,这是找子串吗?
可能是想在
j == i, k = 0
时,s[j] != t[k]
这种情况下,不去检查t[k]
的值,避免只在遍历到串尾时才退出循环。