十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
一:char* catStr(char str1[],char str2[])
茫崖网站制作公司哪家好,找成都创新互联公司!从网页设计、网站建设、微信开发、APP开发、响应式网站等网站项目制作,到程序开发,运营维护。成都创新互联公司自2013年创立以来到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联公司。
{
strcat(str1,str2);
return str1;
}
二:
char* catStr(char str1[],char str2[])
{
int i=0;
int lenstr1=0;
lenstr=strlen(str1)
for(i;i=strlen(str);i++)
{
str1[lenstr++]=str2[1];
}
return str1;
}
我为了省事把两个字符串写死了,你可以改成用户输入 ,
但是为了避免数组溢出,所以要保存字符数组1要有足够空间容纳第二个字符串,我没做这个判断 ,你可以加上。
#include stdio.h
void cat(char* s1,char* s2)
{
int a,b;
a = sizeof(s1);
b = sizeof(s2);
for(int i = a-1;ia+b;i++)
{
if(!s1[i]) s1[i] = s2[i-a+1];
}
}
int main()
{
char a[7] = "aaa";
char b[] = "bb";
cat(a,b);
couta;
system("pause");
return 0;
}
C语言中 本身有strcat函数。
如果要自己实现 可以采用指针方式:
char *my_strcat(char *s, char *d)
{
char *r = s;
while(*r) r++;
while(*d) *r++=*d++;
*r=0;
return s;
}
看错原型了,重新修改如下,希望可以帮到你。
char*
str_cat(char
*src,
char
*dec,
int
n
)
//
不考虑src的数组溢出
{
char
*s
=
src;
while(*src++)//
找到src的结束位置,就是0结尾的地方
;
//
分号
while(n--){
//
在src的结束位置开始加入dec的字符,直到dec遇到0结束
*src
=
*dec++;
src++;
}
*src
=
0;
return
s;
}
错误有三处:
printf("连接后字符串为:%s",c[80]);
改成printf("连接后字符串为:%s",c); %s读的是字符串的地址,而不是数组
return c[80];
你定义的函数为char catStr(char a[], char[]b)类型,意思是返回值为一个字符
如果要返回串的地址,应该写成char * catStr(char a[ ], char b[ ])
你返回了函数内c[ ]的地址,c的地址在你每次调用函数时才分配
最好写成void catStr(char a[], char b[], char c[]);
最后的s1后面没赋值‘\0’
修正后的
#includestdlib.h
#includestdio.h
#includeconio.h
void fun(char p1[],char p2[])
{char *s1,*s2;
s1=p1;s2=p2;
while(*s1!='\0')
s1++;
while(*s2!='\0')
{*s1=*s2;s1++;s2++;}
*s1='\0';
}
void main()
{
char s1[80],s2[40];
system("CLS");
printf("Enter s1 and s2:\n");
scanf("%s %s",s1,s2);
printf("s1=%s\n",s1);
printf("s2=%s\n",s2);
printf("Invoke fun(s1,s2):\n");
fun(s1,s2);
printf("After invoking:\n");
printf("%s\n",s1);
}