我正在研究一些字符串操作函数,只是出于我自己的兴趣。但是,我可能想在以后的代码中使用这些函数。我编写了以下内容来检查字符串中是否存在子字符串。我遇到了一个问题。我的程序比较了两个字符串中的每个字符,但是它有乱序字符的问题。解释需要很长时间,所以我举个例子:
如果检查字符串“fooobar”中是否存在“oobar”,我的程序将无法找到子字符串的位置,因为它会在 char 'o' 的第一个实例上跳闸,我为此开发了一个解决方法,但这就是这是一种解决方法,而不是真正的可靠解决方案。所以我想知道是否有人可以告诉我他们将如何改进以下代码(请记住,我不想使用任何其他库):
int chksbstr(char *str, char *sbstr)
{
int i, sbstrlen, strlen, p = 0;
for(i = 0; sbstr[i] != '\0'; i++);
sbstrlen = i;
for(i = 0; str[i] != '\0'; i++);
strlen = i;
if(sbstrlen > strlen)
{
printf("\n**Error substring is larger than base string!");
return 2;
}
if(sbstrlen == strlen)
{
if(str == sbstr) return 0;
else return 1;
}
for(i = 0; i <= strlen; i++)
{
if(str[i] == sbstr[p]) p++;
else if(str[i] != str[i - 1]) p = 0;
if(p == sbstrlen) return 0;
}
return 1;
}