关于C语言字符串有关问题。代码挺长但只有一个函数里面的有关问题,麻烦看下,感激不尽

关于C语言字符串问题。代码挺长但只有一个函数里面的问题,麻烦看下,感激不尽!
本帖最后由 u013429409 于 2014-05-03 19:44:37 编辑
#include<stdio.h>
#include<malloc.h>
#define MAXSIZE 30
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("输入要输入的字符串(按回车键结束):");
    while((ch=getchar())!='\n')
    {
        s->str[s->len]=ch;
        s->len++;
    }
    s->str[s->len]='\0';    //最后一个赋值为'\0'表示结束。(这个很重要)
    return s;
}
//求子串
int SubStr(SeqString *s,int pos,int len){
    int i;
    SeqString *s2;
    s2=InitStr(s2);
    if(pos<1||pos>=s->len||len<0||len>s->len-pos+1)
    {
        printf("位置或者长度错误!\n");
        return 0;
    }
    for(i=0;i<len;i++)
        {
            s2->str[i]=s->str[pos+i-1];  //第pos+i位的值给s2->str[i];长度+1.
            s2->len++;
        }
    printf("所求字串为%s\n",s2->str);
    return 1;
}
//插入子串
int StrInsert(SeqString *s,int pos,int len){
    int i,j=0;
    SeqString *s2;
    s2=InitStr(s2);                                           问题在这里。。。。。。。。。。。。。
    s2=CreateStr(s2);           //为什么这里只能执行到printf("输入要输入的字符串(按回车键结束):");不能再输入字符串?
    if(pos<1||pos>=s->len||len<0||len>s->len-pos+1)
    {
        printf("位置或者长度错误!\n");
        return 0;
    }
    for(i=s->len;i<pos;i--)
    {
        s->str[i+len]=s->str[i];
    }
    for(i=pos-1;i<pos+len;i++)
    {
        s->str[i]=s2->str[j];
        j++;
    }
    s->len=s->len+len;
    s->str[s->len]='\0';
    printf("插入子串后的字符串为");
    printf("%s\n",s->str);
    return 1;
}
//串置换
int StrReplace(SeqString *s,int pos,int len){
    int i,j=0;
    SeqString *s2;
    s2=InitStr(s2);                                                问题在这里。。。。。。。。。。。。。
    s2=CreateStr(s2);                    //为什么这里只能执行到printf("输入要输入的字符串(按回车键结束):");不能再输入字符串?
    if(pos<1||pos>=s->len||len<0||len>s->len-pos+1)
    {
        printf("位置或者长度的错误!\n");
        return 0;
    }
    for(i=pos-1;i<pos+len;i++)
        {
            s->str[i]=s2->str[j];
            j++;
        }
    printf("串置换之后的字符串为%s\n",s->str);
    return 1;
}
//删除子串
int StrDelete(SeqString *s,int pos,int len){
    int i,j=0;
    if(pos<1||pos>=s->len||len<0||len>s->len-pos+1)