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
- c代码处理
- extern "C"处理C代码
- Linux - 错误处理 代码(C)
- C#异常处理机理-代码分析
- C系代码内存处理优化分析
- C语言部分字符串处理代码示例
- 腐蚀膨胀等形态学处理c代码
- [数字信号处理]IIR滤波器的间接设计(C代码)
- [数字信号处理]IIR滤波器的直接设计(C代码)
- C代码整洁之道-可配置处理过程
- 优秀代码赏析(c, 消息处理框架)
- [数字信号处理]IIR滤波器的直接设计(C代码)
- [数字信号处理]IIR滤波器的间接设计(C代码)
- 通过c/c++对除零代码的处理,看异常处理方法
- 【C语言】——C语言中scanf函数在循环中的错误处理实例代码
- 嵌入式系统上C++调用C语言接口代码链接时找不到C函数问题处理
- C语言卷积和C语言互相关:数字信号处理中的卷积和互相关的C语言代码
- C++/C|输入处理
- scanf()、gets()和getline()读取输入
- asp.net 删除确认对话框
- 解决YUM下Loaded plugins: fastestmirror Determining fastest mirrors
- springmvc中forward和redirect
- asp.net 捕获用户操作 确认删除
- c代码处理
- 多条件筛选界面DropDownMenu使用总结
- 争取做一个早睡早起,有思想也有的趣程序员
- 单链表的冒泡排序以及逆序(交换指针法)
- consul部署 docker篇
- HDU_1009 FatMouse' Trade 【贪心】
- ubuntu16.04中将python3设置为默认
- CSS:z-index
- 简单排序包括冒泡排序和插入排序