请教一道编程题
编写一个函数,它接受两个字符串参数,将它们连接成一个字符串,并使用函数malloc()为该字符串分配足够的存储空间,然后返回一个指向该字符串的指针。
例如,如果传递的是"Hello" 和 "World",该函数将返回一个指向"Hello World!"的指针。
[解决办法]
#include<stdio.h>#include<string.h>#include<stdlib.h>/*编写一个函数,它接受两个字符串参数,将它们连接成一个字符串,并使用函数malloc()为该字符串分配足够的存储空间,然后返回一个指向该字符串的指针。例如,如果传递的是"Hello" 和 "World",该函数将返回一个指向"Hello World!"的指针。*/char *Strcat(char *s1, char *s2);int main() { char s1[] = "Hello"; char s2[] = "World"; char *s = Strcat(s1, s2); printf("s=%s\n", s); free(s); s = NULL; return 0;}char *Strcat(char *s1, char *s2){ int len = strlen(s1) + strlen(s2) + 2; /*包含一个空格和一个字符串结束符*/ char *s = (char *)malloc(len*sizeof(char)); if(s == NULL) { printf("malloc error!\n"); exit(1); } sprintf(s, "%s %s", s1, s2); return s;}
[解决办法]
char *strcats(const char* sz1,const char *sz2){ int len = strlen(sz1)+strlen(sz2); char *szDest = (char*)malloc(len+2); char *temp =szDest; while(*sz1 && (*temp++ = *sz1++)); *temp++ = ' '; while(*sz2 && (*temp++ = *sz2++)); *temp = 0; return szDest;}