C++实现简单源代码计算
来源:互联网 发布:微信机器人 java 编辑:程序博客网 时间:2024/04/30 15:05
#include<iostream>#include<fstream>#include<string> using namespace std; /*本程序根据遇到的首个非空字符进行判断,以下情况不能检测:1.代码行后面注释//2.代码行中间注释/*......*///3.代码行后面注释/*.....*/(如果注释几行会连续判断为代码行)int main(){char filename[60];ifstream inFile;cout<<"请输入根目录的文件名: (本程序源代码输入:源.cpp)"<<endl;cin.getline(filename,60);inFile.open(filename);if(!inFile.is_open()){cout<<"fail"<<endl;exit(EXIT_FAILURE);}int c_line=0;int n_line=0;int e_line=0;int line=0;string temp;// /*......*/注释判断标志bool eflag=false;// 是否空行判断标志bool isline=false;while(inFile.good()){while(getline(inFile,temp)){line++;for(unsigned int i=0;i<temp.length();i++){//去除无效字符if(temp[i]==' '||temp[i]=='\t'||temp[i]=='\r'){continue;};//代码行判断if(temp[i]!=' '&&temp[i]!='\t'&&temp[i]!='\r'&&temp[i]!='/'&&!eflag){isline=true;c_line++;break;};//注释/*......*/判断if(temp[i]!=' '&&temp[i]!='\t'&&temp[i]!='\r'&&eflag){isline=true;while(1){i++;if(temp[i]=='*'&&temp[i+1]=='/'){eflag=false;e_line++;break;};if(i>=temp.length()){e_line++;break;};};};//注释/*......*/判断i++;if(temp[i]=='*'&&temp[i+1]=='/'){eflag=false;e_line++;break;};if(i>=temp.length()){e_line++;break;};};};//注释//判断if(temp[i]=='/'&&i<(temp.length()-1)&&temp[i+1]=='/'&&!eflag){isline=true;e_line++;break;};};//判断是否空行if(!isline){n_line++;}//重置有效字符行的标志isline=false;};}inFile.close();cout<<"总行数为:"<<line<<endl;cout<<"代码行数为:"<<c_line<<endl;cout<<"空行数为:"<<n_line<<endl;cout<<"注释行数为:"<<e_line<<endl;return 0;};
<img src="http://img.blog.csdn.net/20150413093951592?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRFNHR0dHR0c=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
0 0
- C-源代码-计算简单表达式
- C++实现简单源代码计算
- 汇编调用C语言 实现简单加法计算
- CCITT标准CRC-16计算C源代码
- [C++]算术计算器 简单计算+科学计算
- C库源代码实现: strtok
- c实现生产者消费者源代码
- RTree源代码-c语言实现
- C++|单链表的实现源代码
- C++STL库的Vector容器简单实现的源代码参考
- 根据权重随机选取指定条数记录的简单算法实现(C#)【含源代码】
- 简单远程控制源代码(c)
- 用 Python 实现简单的机翼周围 C 型计算网格
- C/S模型 多线程服务器实现简单计算工作并回馈客户端
- 赛码网,简单计算,用C语言自己实现的一个程序,仅供参考
- 简单的实现atoi函数源代码
- java实现简单web服务器(分析+源代码)
- JAVA实现的简单CRM系统源代码
- 【Effective Objective-C 2.0读书笔记】第六章:块(Blocks)和大中枢派发(GCD)
- 交换2个数值的方法
- [BZOJ1176][Balkan2007]Mokia && CDQ分治+树状数组
- UVA - 10935 Throwing cards away I (数组)
- ReactNative 概述
- C++实现简单源代码计算
- Python 传值和引用总结
- 轻松搞定DLL(原理与实现)[整理+原创]
- Android推送服务——百度云推送
- $事件委托
- sql
- java基础知识
- 查看自己linux版本使用的文件系统格式
- XCode 无法输出完整的长字符串