请高手指教,我这程序,调了好久还没找出原因,找出原因的给高分哦!急!!
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<malloc.h>#define maxstrlen 30#define error 0#define ok 1#define true 1#define false 0typedef char sstring[maxstrlen+1];int strassign(sstring t,char *chars){ int i; if(strlen(chars)>maxstrlen) return error; else { t[0]=strlen(chars); for(i=0;i<=t[0];i++) t[i]=*(chars+i-1); return ok; } }int strcopy(sstring t,sstring s){ int i; for(i=0;i<=s[0];i++) t[i]=s[i]; return ok;}int strempty(sstring s){ if(s[0]==0) return true; else return false;}int strcompare(sstring s,sstring t){ int i; for(i=1;i<=s[0]&&i<=t[0];++i) if(s[i]!=t[i]) return s[i]-t[i]; return s[0]-t[0];}int strlength(sstring s){ return s[0]; }int clearstring(sstring s){ s[0]=0; return ok;}int concat(sstring t,sstring s1,sstring s2){ int i; if(s1[0]+s2[0]<=maxstrlen){ for(i=0;i<=s2[0];i++) t[i]=s1[i]; for(i=1;i<=s2[0];i++) t[s1[0]+i]=s2[i]; t[0]=s1[0]+s2[0]; return true ; } else { for(i=1;i<=s1[0];i++) t[i]=s1[i]; for(i=1;i<=maxstrlen-s1[0];i++) t[s1[0]+i]=s2[i]; t[0]=maxstrlen; return false; }}int substring(sstring sub,sstring s,int pos ,int len){ int i; if(pos<1||pos>s[0]||len<0||len>s[0]-pos+1) return error; for(i=1;i<len;i++) sub[i]=s[pos+i-1]; sub[0]=len; return ok;}int index (sstring s,sstring t,int pos ){ int i,j; if(1<=pos&&pos<=s[0]){ 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; } else return 0;}void strprint(sstring t){ int i; for(i=1;i<=t[0];i++) printf("%c",t[i]); printf("\n");}int strassign(sstring t,char *chars){ int i; if(strlen(chars)>maxstrlen) return error; else { t[0]=strlen(chars); for(i=1;i<=t[0];i++) t[i]=*(chars+i-1); return ok; }}