gpt4 book ai didi

C - 搜索子字符串的函数..需要简化

转载 作者:行者123 更新时间:2023-11-30 17:01:21 24 4
gpt4 key购买 nike

首先,我是 C 新手。所以请耐心等待。

我指的是关于指针的教程,它要求我编写一个函数来查找子字符串(如果找到,该函数应该返回子字符串在原始字符串中的位置)。

我编写了代码,它运行得很好,唯一的问题是它太长了,我想知道是否有一种方法可以使它不那么复杂。

以下是代码 -

  • *s - 包含字符串的基地址,
  • *t - 包含子字符串的基址,
  • num - 包含子字符串中的字符数(使用 strlen 计算)

char *search(char *s, char *t, int num)
{
int i = 0, flag = 0;

/* increment str1 until first matching character (of substring) is encountered */
while((*s != *t) && (*s != '\0'))
{
s++;
}

if(*s == *t)
{
/* comparing the str and substr, and incrementing flag.. if flag is incremented num times, the strings match */
while((*(s+i) == *(t+i)) && (i<num))
{
flag++;
i++;
}
}

if(flag == num)
return s;
else
/* recursive function - str is incremented by 1, to start new comparison */
return search((s+1), t, num);
}

任何帮助将不胜感激。提前谢谢您。

最佳答案

我认为您不需要特殊情况来查找第一个字符:

char * search(char *s, char *t, int num)
{
while (*s) {
int i;
for (i = 0; i < num; i++) {
if (!s[i]) {
return NULL;
}

if (s[i] != t[i]) {
break;
}
}

if (i == num) {
return s;
}

s++;
}

return NULL;
}

关于C - 搜索子字符串的函数..需要简化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37119668/

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