读书人

形参、实参传递修改有关问题

发布时间: 2012-02-29 16:44:10 作者: rapoo

形参、实参传递修改问题
我写的函数功能是:主函数里面有一个长的字符串,我要在这个长的字符串中查找短的字符串
我的思路是:用一个函数实现查找这个短的字符串,主函数中调用函数查找,找到一个后将指针移动到短字符串后,进行下一次查找……就这这个指针移动上我的函数就出问题了,这个函数不是完整的,里面的循环有点问题的,不过主要问题不是循环这个地方,应该是参数传递、传值的问题吧,我有点晕了,大家看看吧,给点意见

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的实现
[解决办法]
比如简单点:

C/C++ code
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;} 

读书人网 >C语言

热点推荐