#define ERROR 0 #define OK 1 #define FALSE 0 #define TRUE 1 #define MAXSIZE 20 typedef int Status; typedef char String[MAXSIZE+1];
串的生成
/* 生成一个其值等于chars的串T */ Status StrAssign(String T,char * chars) { int i; if(strlen(chars)>MAXSIZE) return ERROR; else{ T[0] = strlen(chars); for(i=1;i<=T[0];i++) T[i] = *(chars+i-1); return OK; } }
串的比较
/* 串的比较 S>T返回的值大于零 S=T返回零 S<T返回的值小于零 */ int StrCompare(String S,String T) { int i; for(i=1;i<=T[i]&&i<S[i];i++){ if(T[i]!=S[i]) return S[i]-T[i]; } return S[0]-T[0]; }
串的拼接
/* 串的拼接, 当MAXSIZE大于等于二拼接串长度时候,返回true否则返回false */ Status Contact(String S,String T,String Q) { int i; if(S[0]+T[0]<=MAXSIZE){ Q[0] = S[0]+T[0]; for(i=1;i<=S[0];i++) Q[i] = S[i]; for(i=1;i<=T[0];i++) Q[i+S[0]] = T[i]; return TRUE; }else{ Q[0] = MAXSIZE; for(i=1;i<=S[0];i++) Q[i] = S[i]; for(i=1;i<=MAXSIZE-S[0];i++) Q[i+S[0]] = T[i]; return FALSE; } }
串的截取
/* 串的截取,从pos位置开始,长度为len */ Status SubString(String S,String Sub,int pos,int len) { int i; if(pos<1 || len <0 || pos>S[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; }