----------------解决方案--------------------------------------------------------
呵呵!没有嘛!while((*a=*b)!='\0')这句当中的()的优先级最高,是先进性的赋值,然后进行的比较嘛!到了最后的时候,*b为'\0'时,先把这个值设为*a的值,然后比较,条件不满足,退出,呵呵,不知这么理解对不对。
----------------解决方案--------------------------------------------------------
#include <stdio.h>
char mystrcat(char *a,char *b)
{
//应保存a的值,以便函数正确执行后返回a,返回a的目的是:一,当返回值为非零时,表明此函数正确执行。二,方便递归调用,如,printf("%s\n",mystrcat(a,b)),
mystrcat(c,mystrcat(ab))....
//未对a,b是否NULL进检查
while(*a!=0)
a++;
while((*a=*b)!=0)
{
a++;
b++;
}
return *b;
}
void main()
{
char arr1[20]="I love you!";
char arr2[30]="I love you forever";
char *p=arr1;
char *q=arr2;
mystrcat(p,q);//使用错误,说明虽然mystrcat(char *a,char *b)你是写了,但未能理解,也就是说写了也白写,未能实现教学目的
printf("%s\n",arr1);
}
我想自己编一个函数,实现strcat的功能,虽然该程序能打印出来,但是总是出现“该内存不能为read”的警告。
麻烦大家帮我看看。谢谢~~~
----------------解决方案--------------------------------------------------------