#include<stdio.h>
#define maxsize 100
typedef struct{
char A[maxsize];
int n;
}SeqString;
void Assign(SeqString &L,char B[]){
int i=0;
while(B[i]!='\0'){
L.A[i]=B[i];
i++;
}
L.n=i;
}
void DisqStr(SeqString &L){
printf("L.B字符串为:");
for(int i=0;i<L.n;i++){
printf("%c",L.A[i]);
}
printf("\n");
}
void Strlength(SeqString &L){
printf("字符串L.A的长度为:%d\n",L.n);
}
int concat(SeqString &L,char C[]){
int i=0,j;
while(C[i]!='\0'){
i++;
}
for(j=0;j<i;j++){
L.A[j+L.n]=C[j];
}
printf("将串C连接到L.A后得到的字符串为:%s\n",L.A);
return i;
}
void StrEqual(SeqString &L,char C[],int i){
int k=0,a;
a=L.n>=i?L.n:i;
printf("比较L.A和B的字符串大小!(L.A等于C输出0,L.A大于C输出1,L.A小于C输出-1)\n");
for(int j=0;j<a;j++){
if(L.A[j]==C[j]){
k++;
}else if(L.A[j]>C[j]){
printf("1\n");
break;
}else {
printf("-1\n");
break;
}
}
if(k==a){
printf("0\n");
}
}
void InsStr(SeqString &L,int n,int m){
int i;
printf("L.A字符串第%d个位置开始的第%d个字符为:",n,m);
for(i=n-1;i<n+m-1;i++){
printf("%c",L.A[i]);
}
printf("\n");
}
void DelStr(SeqString &L,int n,int m){
int i;
L.n=L.n-m;
for(i=n;i<=L.n;i++){
L.A[i-1]=L.A[i+m-1];
}
printf("删除第%d个位置的%d个字符之后组成新的字符串为:",n,m);
for(i=0;i<L.n;i++){
printf("%c",L.A[i]);
}
}
void InStr(SeqString &L,int n,int m,char C[]){
int a[L.n-n+1];
for(int i=0;i<L.n-n+1;i++){
a[i]=L.A[i+n-1];
}
for(int i=0;i<m;i++){
L.A[i+n-1]=C[i];
}
for(int i=0;i<L.n-n+1;i++){
L.A[n+m-1+i]=a[i];
}
L.n=L.n+m;
printf("将C插在L.A的第%d个位置构成的字符串为:",n);
for(int i=0;i<L.n;i++){
printf("%c",L.A[i]);
}
printf("\n");
}
void Find (SeqString &L,char D[]){
int n=0,i,j,k;
while(D[n]!='\0'){
n++ ;
}
for(i=0;i<L.n-n;i++){
for(j=0,k=i;j<n;j++,k++){
if(D[j]!=L.A[k]){
break;
} }
if(j==n){
printf("D是L.A字符串中从第%d位置到第%d的位置的字符串:\n",i+1,i+n);
}
}
return;
}
int main(){
int i,n,m,a,b,k;
char B[5],C[]="abcdefg",D[4]="cde";
SeqString L;
printf("请输入一个最大长度为5的字符串:");
gets(B);
Assign(L,B);
DisqStr(L);
Strlength(L);
i=concat(L,C);
StrEqual(L,C,i);
printf("请输入要查找从第几个位置开始到后面的第几个字符:");
scanf("%d %d",&n,&m);
InsStr(L,n,m);
printf("请输入在第几个位置插入字符串C:");
scanf("%d",&k);
InStr(L,k,i,C);
printf("请查找字符串D在L.A字符串中的位置:\n");
Find(L,D);
printf("请输入要删除第几个位置开始的几个字符:");
scanf("%d %d",&a,&b);
DelStr(L,a,b);
return 0;
}