关于字符串的插入有关问题,顺序串

关于字符串的插入问题,顺序串。
#include<stdio.h>
#include<malloc.h>
#define MAXSIZE 20
typedef char elemtype;
typedef struct{
    elemtype str[MAXSIZE];
    int len;
}SeqString;
//新建顺序字符串
SeqString *InitStr(SeqString *s){
    s=(SeqString *)malloc(sizeof(SeqString));
    s->len=NULL;
    return s;
 }
 //判断是否建立成功
int Judge(SeqString *s){
    if(s->len==NULL)
    {
        printf("顺序字符串建立成功.\n");
        return 1;
    }
    else
        return 0;
}
//输入字符串
SeqString *CreateStr(SeqString *s){
    char ch;
    printf("输入要输入的字符串(按回车键结束):");//为什么s2=CreateStr(s2);执行到这里就不行了,而 s=CreateStr(s);可以?
    while((ch=getchar())!='\n')
    {
        s->str[s->len]=ch;
        s->len++;
    }
    return s;
}

int StrInsert(SeqString *s,int pos,int len){
    int i,j=0;
    SeqString *s2;
    s2=InitStr(s2);
    s2=CreateStr(s2);                                                    //为什么执行到这里不行
    if(pos<1||pos>=s->len||len<0||len>s->len-pos+1)
    {
        printf("位置或者长度错误!\n");
        return 0;
    }
    for(i=pos-1;i<s->len;i++)
    {
        s->str[i+len]=s->str[i];
    }
    for(i=pos-1;i<pos+len-1;i++)
    {
        s->str[i]=s2->str[j];
        j++;
    }
    s->len=s->len+len;
    printf("插入子串后的字符串为");
    for(i=0;i<s->len;i++)
        printf("%c",s->str[i]);
    printf("\n");
    return 1;
}
int main(){
    SeqString *s;
    int pos,len;
    s=InitStr(s);
    Judge(s);
    s=CreateStr(s);                                                         //这个函数可以。
    printf("请输入要插入子串的位置pos:");
    scanf("%d",&pos);
    printf("请输入要插入子串的位置长度len:");
    scanf("%d",&len);
    StrInsert(s,pos,len);
}
------解决方案--------------------
老手可以设置断点跟踪调试,新手可以利用printf跟踪调试(printf里面别忘了加\n哦)