diff --git a/_03.串/_a.串.c b/_03.串/_a.串.c index fd284e3..eef26af 100644 --- a/_03.串/_a.串.c +++ b/_03.串/_a.串.c @@ -13,6 +13,7 @@ typedef int Status; typedef int ElemType; typedef char String[MAXSIZE + 1]; +// 0λÖÃÓÃÀ´´æ×Ö·û´®³¤¶È Status StrAssign(String T, char *chars) { @@ -33,16 +34,99 @@ Status StrAssign(String T, char *chars) } } -int main(){ - //char chars[]="ABCD"; - String T = "1233"; - //StrAssign(T,chars); - printf("%s \n",T); - printf("%c",T[3]); +Status StrCopy(String T, String S) +{ + // ×¢Òâ´Ë´¦²¢Ã»ÓÐά»¤T[0]£¬´æÒÉ + int i; + for (i = 0; i <= S[0]; i++) + { + T[i] = S[i]; + } + return OK; +} + +Status StrEmpty(String S) +{ + if (S[0] == 0) + { + return TRUE; + } + else + { + return FALSE; + } +} + +int StrCompare(String S, String T) +{ + // ÈôS>T,·µ»ØÖµ>0;S=T,·µ»ØÖµ=0£»·ñÔò<0 + 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(String S) +{ + return S[0]; +} + +Status ClearString(String S) +{ + // ¿ÉÒÔ×¢Òâµ½StringΪÒýÓÃÐÍ + S[0] = 0; + return OK; +} + +Status Concat(String T, String S1, String S2) +{ + // ÓÃT·µ»ØS1+S2Æ´½Ó´®¡£Èôδ½Ø¶Ï·µ»ØTRUE£¬·ñÔòFALSE + int i; + if (S1[0] + S2[0] <= MAXSIZE) + { + // δ½Ø¶Ï + for (i = 1; i <= S1[0]; i++) + { + T[i] = S1[i]; + } + for (i = 1; i <= MAXSIZE - S1[0]; i++) + // iÉÏ½ç´æÒÉ + { + T[S1[0] + i] = S2[i]; + } + T[0] = S1[0] + S2[0]; + return TRUE; + } + else + { + //½Ø¶ÏS2 + for (i = 1; i < S1[0]; i++) + { + T[i] = S1[i]; + } + for (i = 1; i <= MAXSIZE - S1[0]; i++) + { + T[S1[0] + i] = S2[i]; + } + T[0] = MAXSIZE; + return FALSE; + } +} - +int main() +{ + char chars[] = "ABCD"; + String T = " "; + StrAssign(T, chars); + printf("%s \n", T); + printf("%c", T[3]); getchar(); return OK; diff --git a/a.out b/a.out index 2931e16..84d5a09 100644 Binary files a/a.out and b/a.out differ