當前位置:編程學習大全網 - 編程軟體 - 串的模式匹配算法,代碼可以運行但是到壹半就停止了,問題出在哪

串的模式匹配算法,代碼可以運行但是到壹半就停止了,問題出在哪

#include?"stdafx.h"

#include"string.h"

#include"malloc.h"

typedef?struct

{

char?*ch;

int?length;

}HString;

int?substring(HString?&sub,HString?S,int?pos,int?len)

{

int?i;

if(pos<1?||?pos>S.length?||?len<0?||?len>S.length-pos+1)

return?0;

if(sub.ch)

{

sub.ch?=?NULL;

sub.length?=?0;

}

sub.ch=(char*)malloc(len*sizeof(char));

if(!sub.ch)?return?0;

for(i=0;i<len;i++)

sub.ch[i]=S.ch[pos-1+i];

sub.ch[i]='\0';

sub.length=len;

}

int?index(HString?S,HString?T,int?pos)

{

int?n=S.length,m=T.length,i=pos;

HString?sub;

sub.ch?=?NULL;

sub.length?=?0;

if(i>0)

{

while(i<=n-m+1)

{

substring(sub,S,i,m);

if(strcmp(sub.ch,T.ch)!=0)?i++;

else?return?i;

}

}

return?0;

}

void?main()

{

HString?S,T;int?i;

S.ch=(char*)malloc(10*sizeof(char));

T.ch=(char*)malloc(3*sizeof(char));

S.length=10;

T.length=3;

printf("輸入長度為10的串S:");

scanf("%s",S.ch);

printf("輸入長度為3的串T:");

scanf("%s",T.ch);

i=index(S,T,1);

printf("T在S中出現的位置為:%d\n",i);

}

幫妳修改了下, 說實話,妳的代碼寫得真不咋滴!

  • 上一篇:C語言編程序時怎麽控制浮點型輸出的小數點精確到幾位
  • 下一篇:勾股定理中的3個數的關系編程
  • copyright 2024編程學習大全網