#include stdio.h
创新互联从2013年成立,先为新巴尔虎右等服务建站,新巴尔虎右等地企业,进行企业商务咨询服务。为新巴尔虎右企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
#include stdlib.h
#include string.h
int
main(void)
{
char a[] = "abc";
char b[] = "xyz";
char *p;
if ((p = malloc((strlen(a) + strlen(b) + 1) * sizeof(char))) == NULL) {
fprintf(stderr, "malloc error!\n");
abort();
}
strcpy(p, a);
strcat(p, b);
puts(p);
if (p)
free(p);
exit(0);
}
错误有三处:
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[]);
c语言中的连接指de是将obj文件生成为exe文件。
##可以作为连接字符串的连接符,##为宏扩展提供了一种连接实际变元的。如果替换文本中的参数用##相连,那么参数就被实际变元替换,##与前后的空白符被删除,并对替换后的结果重新扫描。
例如,下面定义的宏paste用于连接两个变元:
#definepaste(front,back)front##back
从而宏调用paste(name,1)的结果是建立单词name1。
扩展资料
C语言连接符的使用:
#includestdio.h
#defineOperations(x)operation_##x//##是黏贴字符串
intOperations(sum)(intx,inty){//operation_sum(intx,inty)
returnx+y;
}
intOperations(sub)(intx,inty){//operation_sub(intx,inty)
returnx-y;
}
intOperations(mul)(intx,inty){//operation_mul(intx,inty)
returnx*y;
}
floatOperations(div)(floatx,floaty){//operation_div(intx,inty)
floatresult;
result=x/y;
returnresult;
}
#definePrint(x)printf("%s,%d\n",#x,x);//#表示将参数转变为字符串
intmain()
{
intx;
floaty;
x=Operations(sum)(10,20);
printf("x=%d\n",x);
x=operation_sum(100,20);
printf("x=%d\n",x);
x=Operations(sub)(10,20);//operation_sub(10,20)也可以
printf("x=%d\n",x);
x=Operations(mul)(10,20);//operation_mul(10,20)也可以
printf("x=%d\n",x);
y=Operations(div)(11,20);//operation_div(11,20)也可以
printf("y=%lf\n",y);
Print(100);
return0;
}