C语言 编写函数;void strcat(char *str1,char *str2),功能是将字串接到str2接到str1上,不可调用系统函数

如题所述

第1个回答  2012-03-01
void strcat(char *str1,char *str2)
{
while(*str1++);
while(*str1++=*str2++);
}
这个是我见过的最经典的代码
第2个回答  2012-03-01
动态分布str1的空间,然后把str2的字符串接到后面就可以了追问

哎,不懂啊!这是我上学期期末考的试题,最后的一道大题..我到现在还没搞明白!你们把完整代码写出来么

追答

你在定义str1的时候,要定义的足够大,然后写一个求长度的函数,之后就把str2里面的内容接到后面就可以了,具体代码也不是很难,求长度就是:
while(str1!=0)
{
str1++;i++;
}
i 就是长度,然后for(j=i;j<maxsize(这是str1定义时长度);j++)
for(k=0;k<str2长度;k++)
str1[j]=str2[k];然后用循环输出就可以

第3个回答  2012-03-01
void strcat(char *str1,char *str2)
{
for(;*str1!='\0';str1++);
str1++;
for(;str2!='\0';str2++)
{
*str1=*str2;
str1++;
}
*str1='\0';
}
第4个回答  2012-03-01
百度百科有strcat的详细介绍

其中,strcat函数原型如下:   
char *strcat(char *strDest, const char *strSrc)   
{   char *address = strDest; //该语句若放在assert之后,编译出错
  assert((strDest != NULL) && (strSrc != NULL)); //对源地址和目的地址加非0断言
  while(*strDest) //是while(*strDest!=’\0’)的简化形式
  {
   strDest++;
} //这个循环的目的是让指针strDest指向其字符串的最后一位'\0'
  while(*strDest++ = *strSrc++)
  {
  NULL;
} //这个循环是将字符串strSrc加到strDest的后面  
return address; //为了实现链式操作,将目的地址返回   
}

你给的函数返回类型是void,把最后的return行删去就行了本回答被网友采纳
相似回答