C 언어 데이터 구조 - 하위 문자열 의 포 지 셔 닝 함수

#include
#include
#include 

#define Max 100
#define TRUE 1
#define FALSE 0 

typedef unsigned char SString[Max+1];

typedef int Status;

Status StrAssign(SString T,char *strs)  
{ //         chars  T  
    int i;  
    T[0]=0;
    for(i=0;strs[i];i++)
    {
        T[i+1]=strs[i];
        T[0]=i+1;
    }
}  

int Index(SString S,SString T,int pos)  
{ //     T   S  pos        。    ,     0。  
    //   ,T  ,1≤pos≤StrLength(S)。  4.5  
    int i,j;  
    i = pos;
    j = 1; 
    while( i<=S[0] && j<=T[0] )
    {
        if(S[i]==T[j])
        {
            ++i;
            ++j;
        }
        else
        {
            i=i-j+2;
            j=1;
        }
    }
    if(j>T[0])    
        return i-T[0];  
    else  
        return 0;  
}  

int main()
{
    SString S,T;
    int m;
    char strs1[Max];
    char strs2[Max];
    printf("    :");
    gets(strs1);
    printf("    :");
    gets(strs2);
    StrAssign(S,strs1);
    StrAssign(T,strs2);
    m=Index(S,T,1);
    if(m)
        printf("%d
"
,m); else printf("0
"
); return 0; }

좋은 웹페이지 즐겨찾기