形参、实参传递修改问题
我写的函数功能是:主函数里面有一个长的字符串,我要在这个长的字符串中查找短的字符串
我的思路是:用一个函数实现查找这个短的字符串,主函数中调用函数查找,找到一个后将指针移动到短字符串后,进行下一次查找……就这这个指针移动上我的函数就出问题了,这个函数不是完整的,里面的循环有点问题的,不过主要问题不是循环这个地方,应该是参数传递、传值的问题吧,我有点晕了,大家看看吧,给点意见
void main()
{
char slong[1000],sshort[100],*s1,*s2;
s1=slong;
s2=sshort;
while(s1)
{
finds(s1,s2);
printf("%s\n",s2);
}
}
void finds(char *s1,*s2)
{
char *p1,*p2;
p1=strstr(str,"<abcd");
p2=strstr(p1,"xyz>");
p2=p2+strlen("xyz>")-1;
strncpy(s2,p1,strlen(p1)-strlen(p2));
s1=p2+1;
}
[解决办法]
直接传数组看的不是很清楚吗?
[解决办法]
可以参考一下strstr的实现
[解决办法]
比如简单点:
const char* _strstr(const char* s1, const char* s2){ assert(s2 && s1); const char* p=s1, *r=s2; while(*p!='\0') { while(*p++==*r++); if(*r=='\0') return p; else { r=s2; p=++s1; } } return NULL;}