请教 :编写c库函数 strstr()出现问题,编译器不报错
#include<stdio.h>
#include<string.h>
char *
my_strstr( char const *s1, char const *s2 )
{
int n_s1 = sizeof( s1 );
int n_s2 = sizeof( s2 );
const char *s1_original = s1;
if( n_s1 < n_s2 )
return NULL;
while( 1 )
{
while( *s1 != *s2 )
{
if( ( s1 - s1_original ) > ( n_s1 - n_s2 ))
return NULL;
else
s1++;
}
if( strncmp( s1, s2, n_s2 ) == 0 )
return (char *)s1;
s1++;
}
}
int main()
{
char *a = "hello,girl";
char *b = "hel";
char *c = "iol";
printf( "%d\n", my_strstr( a, b ) - a );
printf( "%d\n", my_strstr( a, c ) - a );
}
[解决办法]
int n_s1 = sizeof( s1 );
这里s1早已退化成指针,永远得不到s1的长度。
用strlen来算长度。
[解决办法]
int n_s1 = strlen( s1 );
int n_s2 = strlen( s2 );