C语音问题求解,。。。

编写一个这样的函数,即将可变数目的字符串作为参数、依次将这些字符串拼接成一个更长的字符串、并返回一个指向拼接成的字符串的指针。

代码如下:

#include <stdio.h>
#include <stdlib.h>
char* fun(char* p1,char* p2)
{
    char* p,*s;
    int len1=0,len2=0,i;
    s = p1;
    while(*s)
        len1++;
    s = p2;
    while(*s)
        len2++;
    p = (char*)malloc(len1+len2+1);
    i = 0;
    while(i < len1)
    {
        p[i] = p1[i];
        i++;
    }
    i = 0;
    while(i<len2)
    {
        p[len1+i] = p2[i];
        i++;
    }
    p[len1+len2] = '\0';
    return p;
}

int main()
{
    char buf1[100]={0};
    char buf2[100]={0};
    char *p = 0;
    printf("请输入字符串1:");
    gets(buf1);
    printf("请输入字符串2:");
    gets(buf2);
    p = fun(buf1,buf2);
    if(p)
        printf("拼接后的字符串:%s\n",p);

    free(p);
    return 0;
}

定义一个字符串链表,以便支持任意大小,然后将字符串内容合并到一个大字符串中
简单点的话, 就申请一个较大的静态空间,顺序结构存储字符串