#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 求串長。...