123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- #include<bits/stdc++.h>
- using namespace std;
- typedef char atype;
- #define maxsize 100000
- typedef struct {
- atype a[maxsize];
- int size;
- }e_list;
- e_list s;
- e_list t;
- e_list p;
- void createlist(e_list &s,char str[]){
- int n=strlen(str);
- for(int i=0;i<n;i++){
- s.a[i]=str[i];
- }
- s.size=n;
- }
- bool dislist(e_list s){
- if(s.size==0)return false;
- int j=0;
- for(int i=0;i<s.size;i++){
- printf("%c",s.a[i]);
- j++;
- if(j%20==0)printf("\n");
- }
- printf("\n");
- }
- void shuzinum(e_list s){
- int n=0,i=0;
- while(s.a[i]){
- if(isdigit(s.a[i]))n++;
- i++;
- }
- printf("%d\n",n);
- }
- void zimunum(e_list s)
- {
- int n=0,i=0;
- while(s.a[i]!=0)
- {
- if(isalpha(s.a[i]))
- n++;
- i++;
- }
- printf("%d\n",n);
- }
- void konggenum(e_list s)
- {
- int n=0,i;
- for(i=0; i<s.size; i++)
- {
- if(isspace(s.a[i]))
- n++;
- }
- printf("%d\n",n);
- }
- void zongzinum(e_list s)
- {
- printf("%d\n",s.size);
- }
- void delestr(e_list s,e_list p)
- {
- int i=0,j,succ=0;
- while((i<=s.size-p.size+1)&&(!succ))
- {
- j=0,succ=1;
- while((j<=p.size-1)&&succ)
- if(p.a[j]==s.a[i+j])
- j++;
- else
- succ=0;
- i++;
- }
- if(succ)
- {
- for(j=0; j<s.size-p.size-1; j++)
- {
- s.a[i-1]=s.a[i+p.size-1];
- i++;
- }
- s.size=s.size-p.size;
- printf("删除后的字符串:");
- for(i=0; i<s.size; i++)
- {
- printf("%c",s.a[i]);
- }
- printf("\n");
- }
- else
- printf("没有配对的子串\n");
- }
- bool TH(e_list s,int i,int j,e_list t){
- int k;
- e_list str;
- str.size=0;
- if(i<=0||j>s.size||i+j-1>s.size)
- return false;
- for(k=0;k<i-1;k++)
- str.a[k]=s.a[k];
- for(k=0;k<t.size;k++)
- str.a[i+k-1]=t.a[k];
- for(k=j+i-1;k<s.size;k++)
- str.a[t.size+k-j]=s.a[k];
- str.size=s.size-j+t.size;
- printf("替换后的字符串为:");
- dislist(str);
- }
- void TH_1(){
- char n[]={"0"};
- cin>>n;
- createlist(t,n);
- int i=3,j=3;
- TH(s,i,j,t);
- }
- void TH_2(){
- char m[maxsize],n[maxsize];
- scanf("%s%s",m,n);
- char *p;
- p=strstr(s.a,m);
- if(p){
- int i=p-s.a;
- int j=strlen(m);
- e_list h;h.size=strlen(n);
- for(int i=0;i<strlen(n);i++)
- h.a[i]=n[i];
- TH(s,i+1,j,h);
- }
- else printf("NOT Find!");
- }
- bool TQCR(e_list &s,int n,int m,int i){
- e_list s1,s2,str;
- str.size=0;
- int l=0,j;
- if(n+m>s.size)return false;
- for(int j=n-1;j<n+m-1;j++)
- s2.a[l++]=s.a[j];
- s2.size=l;
- for(j=0;j<i-1;j++)
- str.a[j]=s.a[j];
- for(j=0;j<s2.size;j++)
- str.a[j+i-1]=s2.a[j];
- for(j=i-1;j<s.size;j++)
- str.a[j+s2.size]=s.a[j];
- str.size=s.size+s2.size;
- for(j=0;j<str.size;j++)
- s.a[j]=str.a[j];
- s.size=str.size;
- }
- void caidan(){
- printf("********************文本编辑*******************************\n");
- printf("* 1.全部字母个数 *\n");
- printf("* 2.数字个数 *\n");
- printf("* 3.空格个数 *\n");
- printf("* 4.文章总个数 *\n");
- printf("* 5.输出删除某一字符串后的文章 *\n");
- printf("* 6.查找替换指定位置开始的指定长度的字符串 *\n");
- printf("* 7.查找替换指定的字符串 *\n");
- printf("* 8.在指定位置提取字符串在指定位置插入 *\n");
- printf("* 9.退出编辑 *\n");
- printf("***********************************************************\n");
- int ch,i=1;
- char n[]={"0"};e_list h;
- while(i){
- printf("\n请输入您所需要模块:");
- scanf("%d",&ch);
- switch(ch){
- case 1:printf("全部字母个数:");zimunum(s);break;
- case 2:printf("数字个数:");shuzinum(s);break;
- case 3:printf("空格个数:");konggenum(s);break;
- case 4:printf("文章总个数:");zongzinum(s);break;
- case 5:printf("删除某一字符串后的文章:");printf("\n请输入您要删除的字符串:");
- cin>>n;createlist(h,n);delestr(s,h);break;
- case 6:printf("查找替换指定位置开始的指定长度的字符串:");TH_1();break;
- case 7:printf("查找替换指定的字符串:");TH_2();break;
- case 8:printf("在指定位置提取字符串在指定位置插入");
- int i,j,k;cin>>i>>j>>k;TQCR(s,i,j,k);dislist(s);break;
- case 9:printf("退出编辑\n");exit(0);break;
- }
- }
- }
- int main(){
- char wenben[]={"abcdefghijklmnopqrstuvwxyz"};
- createlist(s,wenben);
- caidan();
- return 0;
- }
|