K&R的书上第四章的strindex函数中,最后一个k>0判断有什么意义?

发布于 2022-09-06 10:43:13 字数 570 浏览 30 评论 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

许久 2022-09-13 10:43:13

我对算法不熟悉,如果有什么常识性错误请指正。
看了一下,这是找子串吗?
可能是想在 j == i, k = 0 时,s[j] != t[k] 这种情况下,不去检查 t[k]的值,避免只在遍历到串尾时才退出循环。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文