C 需要解释findString()函数返回的结果
为什么下面的findString()函数返回给定参数的指示值 findString(“文本”,“文本”)返回0 findString(“,“text”)返回-1 findString(“,”)返回-1 我读过strstr,也看了其他问题,只是不明白C 需要解释findString()函数返回的结果,c,C,为什么下面的findString()函数返回给定参数的指示值 findString(“文本”,“文本”)返回0 findString(“,“text”)返回-1 findString(“,”)返回-1 我读过strstr,也看了其他问题,只是不明白 // find s1 inside source, return index number if found, -1 if not found #include <stdio.h> #include <stdbool.h&
// find s1 inside source, return index number if found, -1 if not found
#include <stdio.h>
#include <stdbool.h>
int findString (const char source[], const char s[])
{
int i, j, foundit = false;
// try each character in source
for ( i = 0; source[i] != '\0' && !foundit; ++i ) {
foundit = true;
// now see if corresponding chars from s match
for ( j = 0; s[j] != '\0' && foundit; ++j )
if ( source[j + i] != s[j] || source[j + i] == '\0' )
foundit = false;
if (foundit)
return i;
}
return -1;
}
int main (void)
{
int index;
printf ("index = %i\n", findString("text", ""));
printf ("index = %i\n", findString("", "text"));
printf ("index = %i\n", findString("", ""));
return 0;
}
//在源代码中查找s1,如果找到则返回索引号,如果未找到则返回-1
#包括
#包括
int findString(常量字符源[],常量字符s[])
{
int i,j,foundit=false;
//尝试源代码中的每个字符
对于(i=0;源[i]!='\0'&&!foundit;++i){
foundit=true;
//现在看看s中对应的字符是否匹配
对于(j=0;s[j]!='\0'&&foundit;++j)
如果(源[j+i]!=s[j]| |源[j+i]=='\0')
foundit=false;
如果(找到它)
返回i;
}
返回-1;
}
内部主(空)
{
整数指数;
printf(“索引=%i\n”,findString(“文本”),findString;
printf(“索引=%i\n”,findString(“,“文本”);
printf(“索引=%i\n”,findString(“,”);
返回0;
}
- 第一个调用返回
,因为在索引0处的任何字符串中都可以找到空字符串(除了代码中存在错误,请参见下文)0
- 第二个调用返回
,因为在空字符串中找不到非空字符串-1
- 第三个调用返回
,因为您的代码中有一个错误:当未输入外部循环时(即-1
字符串为空),当搜索字符串源
也为空时,您应该添加一个特殊情况以返回s
0
source
中第一次出现的s
的索引。如果s
在source
中不存在,它将返回-1
是否尝试使用调试器单步执行?您使用的IDE是什么?gcc、minGW和notepadA一篇随意阅读的文章表明,函数可以提前退出,然后返回-1。查找空字符串的空间大小写在逻辑上似乎也是如此。@user6923395返回值应该是0,-1,0。