为什么以下findString()函数返回给定参数的指示值?
findString(" text","")返回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>
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;
}
答案 0 :(得分:2)
0
,因为在索引为零的任何字符串中都可以找到一个空字符串(除了代码中有错误,见下文)-1
,因为在空字符串中找不到非空字符串-1
,因为您的代码中存在错误:当未输入外部循环时(即source
字符串为空),您应该添加一个特殊情况以返回{ {1}}当搜索字符串0
也为空时。答案 1 :(得分:0)
它返回map
中第一次出现s
的索引。如果source
中不存在s
,则会返回source