char * strcat(char *, char *)
这个是strcat的原型声明,楼主传入的a和b都是char类型,当然会报错了.
char a,b,c;
scanf("%s%s",a,b);
%s是接收字符串,楼主传入的只是一个char类型,这怎么行呢?
这个样子不就行了?
void?link(char?*?a,char?*?b)
{
strcat(a,b);
}
void?main()
char?a[100],b[100];
link(a,b);
printf("%s",a);
return;
#include?stdio.h
char?*?my_strcat(char?*dst,?char?*src)
char?*p=dst,?*q=src;
while(*p)p++;
while(*q)*p++=*q++;
*p=0;
return?dst;
int?main()
char?s[100],d[100];
scanf("%s%s",d,s);
my_strcat(d,s);
puts(d);
return?0;
错误有三处:
改成printf("连接后字符串为:%s",c); %s读的是字符串的地址,而不是数组
你定义的函数为char catStr(char a[], char[]b)类型,意思是返回值为一个字符
如果要返回串的地址,应该写成char * catStr(char a[ ], char b[ ])
你返回了函数内c[ ]的地址,c的地址在你每次调用函数时才分配
最好写成void catStr(char a[], char b[], char c[]);
字符串连接:即将字符串b复制到另一个字符a的末尾,并且字符串a需要有足够的空间容纳字符串a和字符串b.
#includestdio.h
void?mystrcat(char?a[],char?b[]){//把a和b拼接起来?
int?i=0,j=0;
while(a[i++]!='\0');?
i--;
while(b[j]!='\0'){?
a[i++]=b[j++];
}?
a[i]='\0';?
gets(a);
gets(b);
mystrcat(a,b);
puts(a);?
/*
运行结果:
abc
def
abcdef
*/
以上就是土嘎嘎小编为大家整理的c语言编写函数字符连接相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!