简易文本处理系统代码
  • 浏览:425 评论:0 人
  • 1楼

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    #include<string.h>
    #define MAX 10000
    #define CRT SECURE NO DEPRECATE
    void menu();
    void shuru(char text[]);
    void bc(char text[]);
    void dakai(char text[]);
    void dayin(char text[]);
    void chazhao(char text[],int l);
    void tihan(char text[],int l);
    int strindex(char text[],char t[],int i2,int l);
    void shanchu(char p[],int l);
    void cs(char text[]);
    void charu(char text[],int l);
    void tuichu(int status);
    char text[MAX]="";
    char name[20]="";
    int status=0;
    int ntext;
    void dakai(char text[])
    {
    system("cls");
    FILE *fp;
    char pd,ch;
    char name[30];
    int i=0;
    printf("输入A:确定打开文件(未保存的数据将会丢失)M:返回主菜单");
    fflush(stdin);
    pd=getchar();
    if (pd=='A'||pd=='a')
    {
    printf("请输入要打开文件名字(例如c:\\a.txt)");
    scanf("%s",name);
    while ((fp=fopen(name,"r"))==NULL)
    {
    printf("\n打开文件失败,请重新输入要打开的文件名:");
    scanf("%s",name);
    }
    cs(text);
    while(!feof(fp))
    {
    ch=fgetc(fp);
    text=ch;
    i++;
    }
    text='\0';
    ntext=i;
    fclose(fp);
    printf("\n文件读取成功\n文件内容为\n");
    dayin(text);
    }
    if
    (pd=='M'||pd=='m')
    menu();
    }
    void bc(char text[])
    {
    system("cls");
    FILE*fp;
    char pd;
    char tmp;
    int i;
    printf("\n输入【A】保存;任意键返回主菜单不保存\n");
    fflush(stdin);
    pd=getchar();
    if (!(pd=='A'||pd=='a'))
    {
    menu();
    }
    else
    {
    if(name[20]==NULL)
    {
    printf("\n请输入保存文件名(例如:c:\\a.txt):");
    scanf("%s",name);
    }
    while((fp=fopen(name,"w+"))==NULL)
    {
    printf("文件不存在,请重新输入文件名:");
    scanf("%s",name);
    }
    printf("\nA:确定;B:取消:");
    while(scanf("%c",&tmp)!=EOF)
    {
    if(tmp=='A'||tmp=='a')
    {
    for(i=0;i<ntext;i++)
    fprintf(fp,"%c",text);
    fclose(fp);
    status=1;
    printf("\n文件保存成功\n");
    break;
    }
    if(tmp=='B'||tmp=='b')
    {
    break;
    }
    }
    }
    }
    void cs(char text[])
    {
    int i;
    for(i=0;i<ntext;i++)
    {
    text='\0';
    }
    ntext=0;
    status=0;
    }
    int strindex(char text[],char t[],int i2,int l)
    {
    int i1=l,j=0;
    while(i1<ntext&&j<i2)
    {
    if(text[i1]==t[j])
    {
    j++;
    i1++;
    }
    else
    {
    i1=i1-j+1;
    j=0;
    }
    }
    if(j>=i2)
    {
    return(i1-i2);
    }
    else
    return(-1);
    }
    void menu()
    {
    system("cls");
    time t timep;
    time(&timep);
    printf("%s",ctime(&timep));
    printf("大数据 2019102188 周义红\n");
    printf("\n\n\n\n\n\n\n\n\n\t\t\tWelcom?to?use?our?TXT?edition?system!\n");
    printf("\n\n\t\t\t欢迎您使用文本编辑器软件!\n");
    printf("\n\n\n\n\n\n\n\n\npress?Enter?to?continue...\n");
    getchar();
    loop:
    system("cls");
    printf("\n\n\n\n\t\t******************简易文本编辑器*****************\n\n");
    printf("\t\t\t\t----0.清空内容--\n");
    printf("\t\t\t\t----1.打开文件--\n");
    if(ntext==0){
    printf("\t\t\t\t----2.输入内容--\n");
    }
    else{
    printf("\t\t\t\t----2.继续输入--\n");
    }
    printf("\t\t\t\t----3.查找------\n");
    printf("\t\t\t\t----4.插入------\n");
    printf("\t\t\t\t----5.删除------\n");
    printf("\t\t\t\t----6.替换------\n");
    printf("\t\t\t\t----7.显示内容--\n");
    printf("\t\t\t\t----8.保存------\n");
    printf("\t\t\t\t----9.退出------\n");
    printf("\n\t\t*********************选项************************\n");
    printf("\n\t\t\t\t输入选项0-9:");
    char n;
    fflush(stdin);
    n=getchar();
    if(n>='0'&&n<='9')
    {
    switch (n)
    {
    case'0':cs(text);break;
    case'1':dakai(text);break;
    case'2':shuru(text);break;
    case'3':chazhao(text,0);break;
    case'4':charu(text,1);break;
    case'5':shanchu(text,0);break;
    case'6':tihan(text,0);break;
    case'7':dayin(text);break;
    case'8':bc(text);break;
    case'9':tuichu(status);
    default:break;
    }
    }
    else
    {
    printf("\n输入有误,请重新输入:");
    fflush(stdin);
    n=getchar();
    }
    system("pause");
    goto loop;
    }
    void chazhao(char text[],int l)
    {
    system("cls");
    int i,t,a=-1;
    char pattern[20],bd,pd;
    printf("原文为:\n");
    dayin(text);
    printf("请输入您要查找的内容");
    scanf("%s",pattern);
    printf("您查找的内容是:%s\n",pattern);
    t=strlen(pattern);
    loop:
    a=strindex(text,pattern,t,l);
    if(a!=-1)
    {
    l=a+t;
    }
    int hs=1,ls=0;
    for(i=0;i<=a;i++)
    {
    ls++;
    if(text=='\n')
    {
    hs++;ls=0;
    }
    }
    if(a==-1)
    {
    printf("查找到结尾没有找到\n输入【R】将重头查找;任意键返回主菜单");
    l=0;
    fflush(stdin);
    pd=getchar();
    }
    else
    {
    printf("已经找到在第%d行第%d列,输入【R】继续查找下一处;任意键返回主菜单",hs,ls);
    fflush(stdin);
    bd=getchar();
    if(bd=='R'||bd=='r')
    goto loop;
    }
    if(pd=='R'||pd=='r')
    {l=0;chazhao(text,l);}
    }
    void dayin(char text[])
    {
    system("cls");
    printf("现在文本的内容为:\n");
    printf("%s\n",text);
    int hs=1,i;
    for (i=0;i<ntext;i++)
    {
    if (text=='\n')
    {
    hs++;
    }}
    printf("\n文本共有%d行\n",hs);
    }
    void shuru(char text[])
    {
    system("cls");
    printf("请输入内容(输入@结束输入并返回主菜单):\n");
    printf("%s",text);
    char c;
    int i=ntext,j=ntext;
    fflush(stdin);
    while ((c=getchar())!='@')
    {
    text=c;
    i++;
    ntext=i;
    continue;
    }
    int cout=0,zf=0,h=1,hs=1,zfs=0;
    for(;cout<ntext;cout++)
    {
    zf++;
    if(text[cout]=='\n')
    {h++;zf--;}
    if(text[cout]=='?')
    zf--;
    }
    for(cout=j;cout<ntext;cout++)
    {
    zfs++;
    if(text[cout]=='\n')
    {hs++;zfs--;}
    if(text[cout]=='?')
    zfs--;
    }
    printf("统计:文本一共有%d个字符,%d行,本次输入了%d个字符,%d行\n",zf,h,zfs,hs);
    }
    void shanchu(char p[],int l)
    {
    int i,a=-1,t2=0;
    char x[20],px,pd,pdx,c;
    system("cls");
    printf("%s",p);
    printf("\n输入【A】执行查找删除内容;任意键返回主菜单:");
    fflush(stdin);
    px=getchar();
    if(px=='a'||px=='A')
    {
    printf("\n输入您要删除的内容,以@结束:");
    fflush(stdin);
    while((c=getchar())!='@')
    {
    if(c=='@')
    {
    break;
    }
    else
    {
    x[t2]=c;
    t2++;
    continue;
    }
    }
    loop:
    a=strindex(p,x,t2,l);
    int hs=1,ls=0;
    for(i=0;i<=a;i++)
    {
    ls++;
    if(p=='\n')
    {
    hs++;ls=0;
    }
    }
    if(a==-1)
    {
    printf("已查找结束,您要删除的内容不存在\n输入【R】重新输入要删除的内容;其他键将返回主菜单:");
    l=0;
    fflush(stdin);
    pdx=getchar();
    }
    else
    {
    printf("你要删除的内容在第%d行第%d列\n输入【A】确定删除;输入【B】寻找下个词;其他键将返回主菜单:",hs,ls);
    fflush(stdin);
    pd=getchar();
    l=t2+a;
    if(pd=='a'||pd=='A')
    {
    for(i=a;i<ntext;i++)
    {
    p=p[i+t2];
    }
    ntext=ntext-t2;
    printf("删除成功,删除后的内容为:\n%s\n",text);
    }
    else if(pd=='b'||pd=='B')
    goto loop;
    }
    if(pdx=='r'||pdx=='R')
    shanchu(text,l);
    }
    }
    void charu(char text[],int l)
    {
    system("cls");
    int i=0,t=0,t2=0,a=-1,b;
    char cr[20]="",pd,x[500],c,d;
    printf("\n当前文本信息为:\n");
    printf("%s",text);
    printf("\n输入您要在哪个内容前插入,以@结束:");
    fflush(stdin);
    while((c=getchar())!='@')
    {
    if(c=='@')
    {
    break;
    }
    else
    {
    cr[t]=c;
    t++;
    continue;
    }
    }
    loop:
    a=strindex(text,cr,t,l);
    int hs=1,ls=0;
    for(b=0;b<a;b++)
    {
    ls++;
    if(text=='\n')
    {
    hs++;
    ls=0;
    }
    }
    if(a==-1)
    {
    printf("\n查找到结尾没有找到插入点,输入【R】查找其他;按其他键返回菜单:\n");
    l=0;
    fflush(stdin);
    d=getchar();
    fflush(stdin);
    }
    else
    {
    printf("\n您要插入的位置是第%d行,第%d列之前\n【A】.不是此位置向后继续找插入点\n【B】.在此位置插入\n按其他键返回菜单\n请选择:",hs,ls+1);
    fflush(stdin);
    pd=getchar();
    if(pd=='a'||pd=='A')
    {
    l=a+t;
    goto loop;
    }
    else if(pd=='b'||pd=='B')
    {
    printf("\n\n输入您要插入的内容,以@结束:");
    fflush(stdin);
    while((c=getchar())!='@')
    {
    if(c=='@')
    {
    break;
    }
    else
    {
    x[t2]=c;
    t2++;
    continue;
    }
    }
    for(i=ntext;i>=a;i--)
    {
    text[i+t2]=text;
    }
    for(i=0;i<t2;i++)
    {
    text[i+a]=x;
    }
    ntext=ntext+t2;
    printf("\n当前文本信息为:\n");
    for(i=0;i<=ntext-1;i++)
    printf("%c",text);
    printf("\n文本插入成功\n");
    fflush(stdin);
    getchar();
    }
    }
    if(d=='r'||d=='R')
    {
    l=0;
    charu(text,l);
    }
    status=0;
    }
    void mtihan(char p[],int l)
    {
    int t=0,t1=0,i,a,b;
    char c,th[20],d,d1,bth[20];
    int i2;
    system("cls");
    printf("\n当前文本信息为:\n");
    for (i2=0;i2<=ntext-1;i2++)
    printf("%c",p[i2]);
    printf("\n输入要被替换的内容,以@结束:");
    fflush(stdin);
    while((c=getchar())!='@')
    {
    if(c=='@')
    {
    break;
    }
    else
    {
    bth[t]=c;
    t++;
    continue;
    }
    }
    loop:
    a=strindex(p,bth,t,l);
    int hs=1,ls=0;
    for(b=0;b<a;b++)
    {
    ls++;
    if(p=='\n')
    {
    hs++;
    ls=0;
    }
    }
    if(a==-1)
    {
    printf("\n查找到结尾没有找到要被替换的内容\n输入【R】查找其他内容,按其他键返回主菜单键\n");
    l=0;
    d=getchar();
    fflush(stdin);
    }
    else
    {
    printf("\n\n已经找到要查找的数据在第%d行第%d列\n输入【A】继续向后查找相同内容\n输入其他键将进行替换操作\n请选择:",hs,ls+1);
    fflush(stdin);
    l=t+a;
    char pd;
    pd=getchar();
    if(pd!='a'&&pd!='A')
    {
    printf("\n是否要替换该内容?\nA:替换给内容;其他键返回主菜单\n请选择:");
    fflush(stdin);
    d1=getchar();
    if(d1=='a'||d1=='A')
    {
    printf("\n输入要替换的内容,以@结束:");
    fflush(stdin);
    while((c=getchar())!='@')
    {
    if(c=='@')
    {
    break;
    }
    else
    {
    th[t1]=c;
    t1++;
    continue;
    }
    }
    if(t==t1)
    {
    for(i=0;i<t1;i++)
    p[i+a]=th;
    }
    else
    {
    if(t>t1)
    {
    for(i=0;i<t1;i++)
    {
    p[i+a]=th;
    }
    for(i=a+t1;i<ntext;i++)
    {
    p=p[i+t-t1];
    }
    ntext=ntext+t1-t;
    }
    else
    {
    for(i=ntext;i>=a;i--)
    {
    p[i+t1-t]=p;
    }
    for(i=0;i<t1;i++)
    {
    p[i+a]=th;
    }
    ntext=ntext+t1-t;
    }
    }
    printf("替换成功");
    printf("\n当前文本信息为:\n");
    for(i2=0;i2<=ntext-1;i2++)
    printf("%c",p[i2]);
    getchar();
    status=0;
    }
    }
    else
    goto loop;
    }
    if(d=='r'||d=='R')
    tihan(text,l);
    }
    void tuichu(int status)
    {
    char pd;
    if(status)
    exit(0);
    else
    printf("还未保存文件,确定退出?(Q.直接退出;Y.保存后退出");
    fflush(stdin);
    pd=getchar();
    if(!(pd=='Q'||pd=='q'))
    bc(text);
    exit(0);
    }
    intmain()
    {
    menu();
    return(0);
    }
    拜求大神运行一下,某个地方:time t timep 这里为什么错误