回复 7楼 xzy199999
不会是的,本人分析,只有一次进入最里面的循环,找到b
{
char *head=dest;
char *ss=dest;
char *src={0}; 你可以这样的啊static char a[10] ;
char *src = a;最后返回a
while(*dest)
{
if(*dest!=':')
{
dest++;
}
else
{
head=dest;第一次到这里时
head =dest ——>:
dest--;
dest -->b
while((*dest != ':')&&(strcmp(dest,ss)!=0))第一次满足条件,进入循环
第二次不满足:原因是dest和ss都指向a两个字符串相等strcmp 返回0 != 0假
{
//退出循环这层循环,跑到这层while }后面执行!
*src=*dest; src-->b
src++; 指向下一位
dest--; dest -->a
再判断while循环
}
dest=head;
dest-->:
dest++;
dest-->c
再判断外层while循环,然后一直判断,而c后面都没有“:”啦,不会出现dest在指向“:”, 所以dest不断指向后面,直到字符串结束,退出外层循环,所以scr
}
只采集到b字母,其实也没越界
}
return src;
}
int main()
{
char *s="ab:cd";
printf("%s\n",convert(s));
}
[
本帖最后由 遗矢的老人 于 2012-8-27 02:05 编辑 ]