串的基本操作

2022-07-17 04:06:12 字數 4322 閱讀 1733

#include#define maxstrlen 255

#define true 1

#define false 0

#define ok 1typedef

intstatus;

typedef unsigned

char sstring[maxstrlen+1

];status strassign(sstring &t,char *chars);//

串賦值,生成乙個其值等於chars的串t

status strcopy(sstring &t,sstring s);//

串複製,由串s複製得串t

int strcompare(sstring s,sstring t);//

串比較,若s>t,則返回值》0;若s=t,則返回值=0;若sint strlength(sstring s);//

返回s的元素個數,稱為串的長度

status concat(sstring &t,sstring s1,sstring s2);//

用t返回有s1和s2聯接而成的新串。若未截斷,則返回true,否則返回false

status substring(sstring &sub,sstring s,int pos,int len);//

用sub返回串s的第pos個字元起長度為len的子串

int index(sstring s,sstring t,int pos);//

t為非空串,若主串s中第pos個字元之後存在與t相等的子串,則返回第乙個這樣的子串在s中的位置,否則返回0

void printstr(sstring s);//

輸出串的值

void

printmenu();

intmain()

while(cdh<0||cdh>6

); getchar();

switch

(cdh)

break

;

case

2://

串比較 printf("

串比較,比較串s1和s2的大小----------------------------\n");

printf(

"請輸入串s1的值:");

gets(chars);

strassign(s1,chars);

printf(

"請輸入串s2的值:");

gets(chars);

strassign(s2,chars);

i=strcompare(s1,s2);

if(i>0

) printf(

"比較結果:s1大於s2。\n");

else

if(i==0

) printf(

"比較結果:s1等於s2。\n");

else

printf(

"比較結果:s1小於s2。\n");

break

;

case

3://

求串長 printf("

求串長------------------------------\n");

printf(

"請輸入串s1的值:");

gets(chars);

strassign(s1,chars);

printf(

"串長是:%d\n

",strlength(s1));

break

;

case

4://

串聯接 printf("

串聯接------------------------------\n");

printf(

"請輸入串s1的值:");

gets(chars);

strassign(s1,chars);

printf(

"請輸入串s2的值:");

gets(chars);

strassign(s2,chars);

if(concat(s3,s1,s2)) printf("

s2沒有被截斷;");

else printf("

s2被截斷;");

printf(

"聯接結果:\n");

printstr(s3);

break

;

case

5://

求子串 printf("

求子串--------------------------------\n");

printf(

"請輸入主串:\n");

gets(chars);

strassign(s1,chars);

printf(

"請輸入起始位置pos:\n");

scanf("%d

",&pos);

printf(

"請輸入所求子串長度len:\n");

scanf("%d

",&len);

if(substring(s2,s1,pos,len))

else

printf(

"求子串失敗!\n");

break

;

case

6://

求子串在主串中的位置

printf("

求子串在主串中的位置-----------------------------------\n");

printf(

"請輸入主串:\n");

gets(chars);

strassign(s1,chars);

printf(

"請輸入子串:\n");

gets(chars);

strassign(s2,chars);

printf(

"請輸入起始位置pos:\n");

scanf("%d

",&pos);

i=index(s1,s2,pos);

if(i)

else

printf(

"子串在主串第%d個字元之後未出現。\n

",pos);

break

; }

}return0;

}status strassign(sstring &t,char *chars)//

串賦值,生成乙個其值等於chars的串t

t[0]=i;

return

ok;}

status strcopy(sstring &t,sstring s)//

串複製,由串s複製得串t

int strcompare(sstring s,sstring t)//

串比較,若s>t,則返回值》0;若s=t,則返回值=0;若s

if(i>s[0]&&i>t[0])//

兩個字串都比到最後乙個字元並且對應字元都相等,兩個串相等

return0;

else

if(i>s[0])//

串s比t短,前面的字元都對應相等,則sreturn -1

;

else

//串t比s短,前面的字元都對應相等,則s>t

return1;

}int strlength(sstring s)//

返回s的元素個數,稱為串的長度

status concat(sstring &t,sstring s1,sstring s2)//

用t返回有s1和s2聯接而成的新串。若未截斷,則返回true,否則返回false

else

if(s1[0]else

return

uncut;

}status substring(sstring &sub,sstring s,int pos,int len)//

用sub返回串s的第pos個字元起長度為len的子串

return

false;

}int index(sstring s,sstring t,int pos)//

t為非空串,若主串s中第pos個字元之後(起)存在與t相等的子串,則返回第乙個這樣的子串在s中的位置,否則返回0

//while

}//ifreturn0;

}//index

void printstr(sstring s)//

輸出串的值

void

printmenu()

串的基本操作

include include include include define maxn 50 define ok 1 define error 0 typedef struct strnode snode void creat snode char 建立串 int getsubstr snode i...

串的基本操作

串的基本操作 前記 這一章課件裡主要講了串的屬性和一些常用的操作。課件裡面是通過偽 的方式來進行描述,這樣有利於同學們的理解,以及能夠適用於各種程式語言。下面就針對c 語言對這些基本操作做乙個具體的實現,大家在運用中可以參考。mystring.h ifndef mystring h define m...

串的基本操作

假設有串t s iphone 11 pro max?w pro strassign t,chars 賦值操作。把串t賦值為chars。strcopy t,s 複製操作。由串s複製得到串t。strempty s 判空操作。若s為空串,則返回true,否則返回false。strlength s 求串長。...