读书人

两个字符串如何相连

发布时间: 2013-01-08 14:02:14 作者: rapoo

两个字符串怎么相连?
用C语言。 char a[]="sdfdf";
char b[]="6d6445";
[解决办法]
char *c = (char *)malloc(strlen(a) + strlen(b) + 1);
sprintf(c, "%s%s", a, b);
[解决办法]

引用:
用C语言。 char a[]="sdfdf";
char b[]="6d6445";


如果是
char *a=(char *)malloc(..);
...

可以用
char *a = (char *)realloc(a,strlen(a) + strlen(b) + 1);
strcat(a,b);

[解决办法]
引用:
char *c = (char *)malloc(strlen(a) + strlen(b) + 1);
sprintf(c, "%s%s", a, b);

申请的内存未初始化,sprintf 并不会生成末尾的空字符,后果很严重的。
[解决办法]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char a[]="sdfdf";
char b[]="6d6445";
char *c;
int main() {
c=(char *)malloc(strlen(a) + strlen(b) + 1);
if (NULL==c) {
printf("Can not malloc c!\n");
return 1;
}
strcpy(c,a);
strcat(c,b);
printf("a:[%s],b:[%s],c:[%s]\n",a,b,c);
free(c);
return 0;
}

读书人网 >C语言

热点推荐