第16周项目5-编程处理C++代码(判断主函数个数)
来源:互联网 发布:owncloud9 php 编辑:程序博客网 时间:2024/06/04 23:20
问题及代码:
/* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:num.cpp *作 者:贺长老 *完成日期:2014年12月16日 *版 本 号:v1.0 * *问题描述:在CodeBlocks等IDE中都提供了代码格式整理的功能。我们可以编写程序,处理的数据就是用C++写的源代码文件。C++源文件是一种文本文件,可以通过程序进行操作。 读入一个C++程序,判断其中是否只有一个main()函数,输出“暂时没有发现问题”,或者“没有main()函数”,或者“不能定义多个main()函数”; 提示1:简单处理,可以只比较判断“main()”,考虑实际上的各种可能,main后面的括号中还有其他多种写法。建议按最简单的情形处理。 提示2:建议设计一个函数,将读到的代码与字符串“main()”进行比较。函数用于判断s1是否“包含”在读入的一行s2中,调用时,形参s1处的实参用“main()”即可,这样写提升了“抽象”级别,更容易实现,对应更高的代码质量。*程序输入:无。*程序输出:依题目条件。*/ #include<fstream>#include<iostream>#include<string>#include<cstdlib>using namespace std;int appear(char*s1,char*s2);int main( ){ char line[256]; char main_fun[8]="main()"; int main_num=0; //将文件中的数据读入到字符数组中 ifstream sourceFile("instance.txt",ios::in); //以输入的方式打开文件 if(!sourceFile) //测试是否成功打开 { cerr<<"read error!"<<endl; exit(1); } while(!sourceFile.eof()) { sourceFile.getline(line,255,'\n'); main_num+=appear(line,main_fun); if (main_num>1) //多于1个,没有必要再去读取 break; } sourceFile.close(); if(main_num==0) cout<<"error: no 'main()'."; else if (main_num==1) cout<<"right: a 'main()' be exist."; else cout<<"error: more than one 'main()'."; cout<<endl; return 0;}//返回s2在s1中出现了几次int appear(char*s1,char*s2){ int n=0,flag; char *p,*q; for(; *s1!='\0'; s1++) { if (*s2==*s1) //判断字符串中是否有和要判断的字串首字符相同的字符 { flag=1; p=s1 ; //s1、p 为第一个相同字符的地址 q=s2; for(; *q!='\0';) //如果有则判断接下去的几个字符是否相同 { if (*q++!=*p++) { flag=0; break; } } if (flag==1) n++; } } return(n);}
运行结果:
知识点总结:
设计一个函数,将读到的代码与字符串“main()”进行比较。函数用于判断s1是否“包含”在读入的一行s2中,调用时,形参s1处的实参用“main()
”即可,这样写提升了“抽象”级别,更容易实现,对应更高的代码质量。
学习心得:
真心不知道从何下手,先偷师参考了贺长老的这个程序,突然茅塞顿开··
我觉得下面的我应该会处理了。
0 0
- 第16周项目5-编程处理C++代码(判断主函数个数)
- 第16周项目5-编程处理C++代码(输入m、n两个数字,从第m行起的n行代码将作为注释使用)
- 第16周项目5-编程处理C++代码(花括号单独占一行且加上行号)
- 第16周项目5(1)-编程处理C++源代码
- 第十六周 项目五:编程处理C++源代码(5.1:判断是否有main()函数)
- 第十八周项目实践3.1(1)编程处理c代码
- 第十八周项目实践3.1(2)编程处理c代码
- 第十八周项目实践3.1(4)编程处理c代码
- 第十八周项目实践3.1(3)编程处理c代码
- 第16周项目统计男同学个数(字符串)
- 第16周项目-小玩文件(统计个数)
- 第13周项目3成绩处理(函数版)
- 2014秋C++第16周 项目5参考 编程处理C++源代码
- C++第16周项目4 -处理C++源代码 - (1)有没有main函数?
- 第12周项目3 利用递归函数求解(4、Fibnacci序列的第20个数)
- 第16周项目2 单词的个数
- 第13周项目5-统计大小写字母个数
- 第13周 项目5-1 统计数字个数
- hdu2614 Beat 简单dfs
- Mahout0.9 ——hadoop2.2.0编译与安装
- MySQL read_log_event(): 'Found invalid event in binary log'
- Android4.4(MT8685)源码蓝牙解析--BLE搜索
- win64使用openssl生成ca证书
- 第16周项目5-编程处理C++代码(判断主函数个数)
- mybatis实战教程(mybatis in action)之四:实现关联数据的查询
- [JAVA]POI(Apache POI)各Jar包的作用
- 典型相关分析(Canonical Correlation Analysis, CCA)
- jquery跨域请求解决方案(都是从网上找的,本人未加验证)
- [黑马程序员][C语言]预处理指令
- EAX、ECX、EDX、EBX寄存器的作用
- 让rm–rf 不那么危险
- CodeForces 493D Vasya and Chess