2004年1 3シリアルの基本演算によりs 1のすべてのサブシリアルs 2を削除する


【コード】
#include 
#include 

typedef struct
{
    char* ch;
    int length;
}Str;

int strassign(Str* str, char* ch);
int strlength(Str str);
int strcompare(Str str1,Str str2);
int concat(Str* str,Str str1, Str str2);
int substring(Str* substr,Str str,int pos,int len);
int clearstring(Str* str);

void Delete(Str* s1,Str s2)
{
    Str sub1,sub2,sub3;
    
    //      
    sub1.ch = sub2.ch=sub3.ch = NULL;
    sub1.length = sub2.length = sub3.length = 0;
    
    // s1             ,   s2  
    int i,len;
    i = 0;
    len = strlength(s2);
    
    while(i < s1->length)
    {
        //     
        if(substring(sub1,s1,i,len) != 0)
        {
            // s2  ,           
            if(strcompare(sub1,s2)==0)
            {
                int f1,f2;
                
                // sub1 s1      
                f1 = substring(sub2,*s1,0,i);
                
                // sub1 s1      
                f2 = substring(sub3,*s1,i+len,s1->length-len-i);
                
                // sub2    
                if(f1 != 0)
                {
                    //   sub3    ,             
                    if(f2 != 0)
                        concat(s1,sub2,sub3);
                    else
                        strassign(s1,sub2.ch);
                }
                else if(f2 != 0)
                {
                    //  sub2   ,sub3  ,       
                    strassign(s1,sub3.ch);
                }
                else
                    clearstring(s1);//         s1
            }
            else
                ++i;
        }
        else
            ++i;
    }
    
}


int main()
{

    return 0;
}