c代码处理

来源:互联网 发布:脸型测试软件 编辑:程序博客网 时间:2024/06/03 23:43
#include <stdio.h>#include <stdlib.h>#include <string.h>void judgemain ();                         /*判断主函数*/int is_sub_sring(char *s1,char *s2);           /*判断s1是否包含在读入的一行s2中*/void meihua();                           /*大括号单独占一行,加行号*/void add_notes();                        /*添加注释*/void print();                            /*输出代码文件中的内容(加行数)*/int i;FILE *fp;char ch;char filename[100];                      /*要打开的文件名*/char filename0[100];                     /*修改后要存储的文件名*/int main(){    while (1)    {    printf("选择你要进行的操作:\n");    printf("1.检查主函数\n");    printf("2.使”{}“独占一行\n");    printf("3.将特定行设为注释\n");    printf("0.退出\n");    scanf("%d",&i);    if (i>0&&i<=3)    {        printf("输入你要打开修改的代码文件名:\n");    scanf("%s",filename);        if (i==1)        judgemain();        if (i==2)        meihua();        if (i==3)        add_notes();    }    else        break;    }    return 0;}void judgemain(){    fp=fopen(filename,"r");    if (!fp)    {        fprintf(stderr,"error open file!\n");       /* 输出错误信息到标准错误设备 */        exit(-1);    }    int main=0;                             /*main函数的个数*/    char s1[10000],s2[10000];                /*存储输入的主函数和读入的代码内容*/    printf("输入要检查的主函数:\n");       /*输入要检查的主函数内容*/    scanf("%s",s1);    while (fscanf(fp,"%s",s2)!=EOF)    {        main+=is_sub_sring(s1,s2);    }    printf("主函数有%d个\n",main);    if (main>1)        printf("!!!你的代码有%d个主函数!!!\n",main);    if (main==0)        printf("!!!你的代码没有主函数!!!\n");        fclose(fp);}int is_sub_sring(char *s1,char *s2)             /*判断s1是否在s2中并返回有几个*/{int len1,len2,i,t,s0,main=0,flag;len1=strlen(s1);            /*s1的长度*/    len2=strlen(s2);          /*读入s2的长度*/    for (i=0;i<len2;i++)          /*进行len2次循环找出s2中有几个s1*/    {        if (s1[0]==s2[i])      /*如果查找到一个字符和s1的第一个字符相同继续比较后面的字符*/        {            for (t=i,s0=0;t<i+len1,s0<len1;t++,s0++)            {                if (s1[s0]==s2[t])                    flag=1;                    else                {                    flag=0;                    break;                }            }            if (flag==1)           /*如果返回值为1则s2中有s1,s1个数+1*/            {                i=i+len1;                    main++;                    flag=0;          /*flag初始化*/            }        }    }    return main;            /*返回s1的个数*/}void meihua(){    char next,last;    last='\0';    fp=fopen(filename,"r");    if (!fp)    {        fprintf(stderr,"error open file!\n");       /* 输出错误信息到标准错误设备 */        exit(-1);    }    FILE *fout;    printf("请输入修改后另存为的文件名:");    scanf("%s",filename0);/*输入修改后要存为的文件名*/    fout=fopen(filename0,"w");    while (fscanf(fp,"%c",&ch)!=EOF)/*逐个字符扫描*/    {    if (ch=='{'||ch=='}')/*如果遇到{}执换行操作*/        {            if (last!='\n')/*如果前一个字符不是换行符加换行符*/                fprintf(fout,"\n%c",ch);            else            {            fscanf(fp,"%c",&next);/*读入{}的下一个字符*/            if (next=='\n')/*判断{}的下一个字符是否为换行符*/        fprintf(fout,"%c%c",ch,next);/*如果{}的下一个字符为换行符向文件中直接写入ch和next字符*/        else            fprintf(fout,"%c\n%c",ch,next);/*如果{}的下一个字符不是换行符则加上换行符后写入*/        }        }        else            fprintf(fout,"%c",ch);        last=ch;    }    fclose(fout);    fout=fopen(filename0,"r");print(fout);    printf("修改后的文件已经另存为“%s”\n",filename0);    fclose(fout);    fclose(fp);}void add_notes(){    FILE *fout;    fp=fopen(filename,"r");    printf("请输入修改后另存为的文件名:");    scanf("%s",filename0);    fout=fopen(filename0,"w");int m,n,hang=1;printf("这是原程序\n");print(fp);    fclose(fp);    fp=fopen(filename,"r");printf("请输入要作为注释的开始行:\n");scanf("%d",&m);printf("输入从开始行开始的行数:\n");scanf("%d",&n);    while (fscanf(fp,"%c",&ch)!=EOF)    {        if (ch=='\n')      /*计算行数*/        {            hang++;        }            if (hang>=m&&ch=='\n'&&hang<=m+n-1)      /*如果行数在输入的数据之间加上//*/            {                fprintf(fout,"%c//",ch);            }            else            fprintf(fout,"%c",ch);    }    fclose(fout);    fclose(fp);    fout=fopen(filename0,"r");    printf("这是修改后的程序\n");print(fout);    fclose(fout);}void print(FILE *file)          /*打印代码文件中的内容并加上行号*/{    int hang=1;    printf("%d|",hang);    while (fscanf(file,"%c",&ch)!=EOF)    {        if (ch=='\n')        {            hang++;            printf("%c%d|",ch,hang);        }        else        printf("%c",ch);    }    printf("\n");    hang=1;}

0 0
原创粉丝点击