C语言 编写函数;void strcat(char *str1,char *str2),功能是将字串接到str2接到str1上,不可调用系统函数 5
4个回答
展开全部
void strcat(char *str1,char *str2)
{
while(*str1++);
while(*str1++=*str2++);
}
这个是我见过的最经典的代码
{
while(*str1++);
while(*str1++=*str2++);
}
这个是我见过的最经典的代码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
动态分布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];然后用循环输出就可以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void strcat(char *str1,char *str2)
{
for(;*str1!='\0';str1++);
str1++;
for(;str2!='\0';str2++)
{
*str1=*str2;
str1++;
}
*str1='\0';
}
{
for(;*str1!='\0';str1++);
str1++;
for(;str2!='\0';str2++)
{
*str1=*str2;
str1++;
}
*str1='\0';
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
百度百科有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行删去就行了
其中,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行删去就行了
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询