gpt4 book ai didi

K&R 的 C 编程 strindex 函数中最后一个 k>0 有何作用?

转载 作者:行者123 更新时间:2023-11-30 14:51:33 27 4
gpt4 key购买 nike

来自 K&R 的 ANSI C 编程(第 69 页),有一个 strindex 函数,它将返回源字符串中第一个搜索字符串的位置:

#include <stdio.h>
#define MAXLINE 1000 //max input length
int getline(char line[], int max);
int Strindex(char source[], char searchfor[]);
char pattern[] = "ould";

int main()
{
char line[MAXLINE];
int found = 0;

while (getline(line, MAXLINE) > 0)
if (Strindex(line, pattern) >= 0) {
printf("%s", line);
found++;
}
return found;
} // end of main function


int getline(char s[], int lim)
{
int c, i;
i = 0;
while (--lim > 0 && (c = getchar()) != EOF && c != '\n')
s[i++] = c;
if (c == '\n')
s[i++] = c;
s[i] = '\0';
return i;
}

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') //here is the k
return i;
}
return -1;
}

我的问题是:

j = i时,k = 0; s[j] != t[k] (如果t[]s[]不是空字符串),看起来t [0] 永远不会得到 \0 值?那么,这个 k>0 在最后一个 if 语句中做了什么?: if (k > 0 && t[k] == '\0')

最佳答案

如果我猜对了,Strindex() 函数会检查字符串 t 是否在字符串 s 内。

所以 if (k > 0 && t[k] == '\0') 语句意味着字符串 t 中到目前为止的每个字符都与字符串 s 相同,我们得到了字符串 t 的末尾,因此我们对它进行了处理,它返回字符串 s 中字符串 t 开始处的索引。

关于K&R 的 C 编程 strindex 函数中最后一个 k>0 有何作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48204879/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com