首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请问 :编写c库函数 strstr()出现有关问题,编译器不报错

2013-01-04 
请教 :编写c库函数 strstr()出现问题,编译器不报错#includestdio.h#includestring.hchar *my_strstr(

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

热点排行