① 串赋值Assign(s,t):将一个值赋给串s。
② 销毁串DestroyStr(s):释放串s占用的内存空间。
③ 串复制StrCopy(s,t):将一个串t赋给串s。
④ 求串长StrLength(s):返回串s的长度。
⑤ 判断串相等StrEqual(s,t):两个串s和t相等时返回1;否则返回0。
⑥ 串连接Concat(s,t):返回串s和串t连接的结果。
⑦ 求子串SubStr (s,i,j):返回串s的第i个位置开始的j个字符组成的串。
⑧ 查找定位位置Index(s,t):返回子串t在主串s中的位置。
⑨ 子串插入InsStr(s,i,t):将子串t插入到串s的第i个位置。
⑩ 子串删除DelStr(s,i,j):删除串s中从第i个位置开始的j个字符。
⑪ 子串替换RepStrAll(s,s1,s2):将串s中所有出现的子串s1均替换成s2。
⑫ 输出串DispStr(s):显示串s的所有字符。
1 #include<stdio.h>
2 #define maxsize 100
3 typedef struct{
4 char ch[maxsize];
5 int n;
6 }SeqString;
7
8 void Assign(SeqString &L,char ch1[]){ // 数组赋值给字符串
9 int i=0;
10 while(ch1[i]!='\0'){
11 L.ch[i]=ch1[i];
12 i++;
13 }
14 L.n=i;
15 }
16
17 void DisqStr(SeqString &L){ // 输出串
18 printf("L.ch的字符串为:");
19 for(int i=0;i<L.n;i++){
20 printf("%c",L.ch[i]);
21 }
22 printf("\n");
23 }
24
25 int concat(SeqString &L,char ch2[]){ //串连接
26 int i=0,j,m;
27 m=L.n;
28 while(ch2[i]!='\0'){
29 i++;
30 m++;
31 }
32 for(j=0;j<i;j++){
33 L.ch[j+L.n]=ch2[j];
34 }
35 printf("将串ch2连接到L.ch后面,得到的新的字符串为:\n%s\n",L.ch);
36 L.n=m;
37 return i;
38 }
39
40 void Strlength(SeqString &L){ //求串长
41 printf("字符串L.ch的长度为:%d\n",L.n);
42 }
43
44 void StrEqual(SeqString &L,char ch2[],int i){ //判断串相等
45 int k=0,a;
46 a=L.n>=i?L.n:i;
47 printf("判断L.ch和ch2的字符串是否相等!\n结果为:");
48 for(int j=0;j<a;j++){
49 if(L.ch[j]==ch2[j]){
50 k++;
51 }else if(L.ch[j]>ch2[j]){
52 printf("1\n");
53 break;
54 }else {
55 printf("-1\n");
56 break;
57 }
58 }
59 if(k==a){
60 printf("0\n");
61 }
62 }
63
64 void Index (SeqString &L,char ch3[]){
65 int n=0,i,j,k;
66 while(ch3[n]!='\0'){
67 n++ ;
68 }
69 for(i=0;i<L.n-n;i++){
70 for(j=0,k=i;j<n;j++,k++){
71 if(ch3[j]!=L.ch[k]){
72 break;
73 } }
74 if(j==n){
75 printf("ch3字符串是从L.ch字符串中的第%d位置到第%d的位置\n",i+1,i+n);
76 }
77 }
78 return;
79 }
80
81 void InsStr(SeqString &L,int n,int m){ //串的查找
82 int i;
83 printf("L.ch字符串第%d个位置开始的%d个字符为:\n",n,m);
84 for(i=n-1;i<n+m-1;i++){
85 printf("%c",L.ch[i]);
86 }
87 printf("\n");
88 }
89
90 int main(){
91 int i,m,n;
92 char ch1[100],ch2[5]="efgh",ch3[4]="efg";
93 SeqString L;
94 printf("请输入一个字符串:\n");
95 gets(ch1);
96 Assign(L,ch1);
97 DisqStr(L);
98 Strlength(L);
99 StrEqual(L,ch2,i);
100 i=concat(L,ch2);
101 printf("请问要查找第几个位置开始的几个字符:\n");
102 scanf("%d %d",&n,&m);
103 InsStr(L,n,m);
104 Index(L,ch3);
105 DisqStr(L);
106 }