读书人

请问 :编写c库函数 strstr()出现有关

发布时间: 2013-01-04 10:04:16 作者: rapoo

请教 :编写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 );

[解决办法]
sizeof(s1)计算的是指针所占的字节数,32位系统中是4byte。

读书人网 >C语言

热点推荐