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("输出的的字符串为:");
19 for(int i=0;i<L.n;i++){
20 printf("%c",L.ch[i]);
21 }
22 printf("\n");
23 }
24
25 void Strlength(SeqString &L){ //求串长
26 printf("字符串L.ch的长度为:%d\n",L.n);
27 }
28
29 int concat(SeqString &L,char ch2[]){ //串连接
30 int i=0,j;
31 while(ch2[i]!='\0'){
32 i++;
33 }
34 for(j=0;j<i;j++){
35 L.ch[j+L.n]=ch2[j];
36 }
37 printf("将串ch2连接到L.ch后面,得到的新的字符串为:\n%s\n",L.ch);
38 return i;
39 }
40
41 void StrEqual(SeqString &L,char ch2[],int i){ //判断串相等
42 int k=0,a;
43 a=L.n>=i?L.n:i;
44 printf("判断L.ch和ch2的字符串是否相等!(L.ch>ch2->1,L.ch=ch2->0,L.ch<ch2->-1)\n结果为:");
45 for(int j=0;j<a;j++){
46 if(L.ch[j]==ch2[j]){
47 printf("0\n");
48 break;
49 }else if(L.ch[j]>ch2[j]){
50 printf("1\n");
51 break;
52 }else {
53 printf("-1\n");
54 break;
55 }
56 }
57 }
58
59 void InsStr(SeqString &L,int n,int m){ //串的插入
60 int i;
61 printf("L.ch字符串第%d个位置开始的%d个字符为:\n",n,m);
62 for(i=n-1;i<n+m-1;i++){
63 printf("%c",L.ch[i]);
64 }
65 printf("\n");
66 }
67
68 void DelStr(SeqString &L,int n,int m){ //删除串
69 int i;
70 L.n=L.n-m;
71 for(i=n;i<=L.n;i++){
72 L.ch[i-1]=L.ch[i+m-1];
73 }
74 printf("删除第%d个位置的%d个字符之后组成新的字符串为:\n",n,m);
75 for(i=0;i<L.n;i++){
76 printf("%c",L.ch[i]);
77 }
78 }
79
80 void InStr(SeqString &L,int n,int m,char ch2[]){ //插入串
81 int a[L.n-n+1];
82 for(int i=0;i<L.n-n+1;i++){
83 a[i]=L.ch[i+n-1];
84 }
85 for(int i=0;i<m;i++){
86 L.ch[i+n-1]=ch2[i];
87 }
88 for(int i=0;i<L.n-n+1;i++){
89 L.ch[n+m-1+i]=a[i];
90 }
91 L.n=L.n+m;
92 printf("将ch2插在L.ch的第%d个位置之后构成的字符串为:\n",n);
93 for(int i=0;i<L.n;i++){
94 printf("%c",L.ch[i]);
95 }
96 printf("\n");
97 }
98
99 void Find (SeqString &L,char ch3[]){
100 int n=0,i,j,k;
101 while(ch3[n]!='\0'){
102 n++ ;
103 }
104 for(i=0;i<L.n-n;i++){
105 for(j=0,k=i;j<n;j++,k++){
106 if(ch3[j]!=L.ch[k]){
107 break;
108 } }
109 if(j==n){
110 printf("ch3字符串是从L.ch字符串中的第%d位置到第%d的位置\n",i+1,i+n);
111 }
112 }
113 return;
114 }
115
116 int main(){
117 int i,n,m,a,b,k;
118 char ch1[100],ch2[100],ch3[4]="efg";
119 SeqString L;
120 printf("请输入一个字符串:\n");
121 gets(ch1);
122 Assign(L,ch1);
123 DisqStr(L);
124 Strlength(L);
125 printf("请输入一个字符串ch2:\n");
126 gets(ch2);
127 i=concat(L,ch2);
128 StrEqual(L,ch2,i);
129 printf("请问要查找第几个位置开始的几个字符:\n");
130 scanf("%d %d",&n,&m);
131 InsStr(L,n,m);
132 printf("请问要在%s第几个位置插入字符串ch2:\n",ch1);
133 scanf("%d",&k);
134 InStr(L,k,i,ch2);
135 printf("查找字符串ch3在L.ch字符串中的位置:\n");
136 Find(L,ch3);
137 printf("请问要删除第几个位置开始的几个字符:\n");
138 scanf("%d %d",&a,&b);
139 DelStr(L,a,b);
140 return 0;
141 }