去除cpp中注释的小程序
//本程序针对 vc++ 6.0 编译器语法,使用者要保证测试用例能在 vc++ 6.0 下编译通过
#include"stdio.h"
#define checkInputError(ch) if(scanf("%c",&ch) == EOF) { printf("Error!/n");return; }
#define ERROR printf("Error!/n");return;
static int DQM = false;// 双引号 double quotation marks
static __int64 ALL = 0;
void main() {
char ch,ch1;
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
while(scanf("%c",&ch) != EOF) {
//如果读到正斜杆
if(ch == '/') {
checkInputError(ch);
if(ch == '/') {
bool flag = false;
while(true) {
if(scanf("%c",&ch1) == EOF) { printf("/n//正常到文件尾"); return; }
if(ch1 == '/n' && ch != '//') {
printf("/n"); break;
}
ch = ch1;
}
}
else if(ch == '*') {
checkInputError(ch1);
while(true) {
checkInputError(ch);
if(ch1 == '*' && ch == '/') break;
ch1 = ch;
}
}
else {
printf("/%c",ch); ALL += 2;
}
}
//如果读到单引号, 这里还没有处理空字符 ''
else if(ch == '/'') {
checkInputError(ch1);
printf("'%c",ch1); ALL+= 2;
if(ch1 == '/'') { printf("/*识别出空字符*/"); continue; }
do {
checkInputError(ch); printf("%c",ch); ALL++;
if(ch1 == '//' && ch == '//') { //取消识别第二个 / 为转义
checkInputError(ch); printf("%c",ch); ALL++;
}
//else if(ch1 == '//' && ch == '/"') { /*识别 /" */ /
checkInputError(ch); printf("%c",ch); ALL++; /
}
else if(ch1 == '//' && ch == '/'') { //识别 /'
checkInputError(ch); printf("%c",ch); ALL++;
}
ch1 = ch;
} while(ch != '/'');
}
//如果读到双引号
else if(ch == '/"') {
checkInputError(ch1);
printf("/"%c",ch1); ALL+= 2;
if(ch1 == '/"') { printf("/*识别出了空串*/"); continue; }//识别出了空串
do {
checkInputError(ch); printf("%c",ch); ALL++;
if(ch1 == '//' && ch == '/"') { //识别 /"
checkInputError(ch); printf("%c",ch); ALL++;
}
else
if(ch1 == '//' && ch == '//') { //取消识别第二个 / 为转义
checkInputError(ch); printf("%c",ch); ALL++;
}
ch1 = ch;
} while(ch != '/"');
}
//正常输出字符
else {
printf("%c",ch); ALL++;
}
}
printf("/n //ALL = %I64d/n",ALL);
}
/*
//按 / / ' * 四个符号的相互嵌套作用分析,分成四种情况,/
采用一次扫描配对处理。
//每次读字符都要判断是否到 EOF
while(fin >> ch) {
if 读到 / :
fin >> ch.
if 是 / :
while(true) {
if fin >> ch == EOF : 正常到达文件尾,return
if 遇到回车: { 输出回车,break; }
}
else if 是 * :
判断后面连续输入的两个字符为 *和/ 后,break
else :
输出 / 和 ch
else if 读到 ' :
fin >> ch1
输出 ' 和 ch1
if ch1 是 ' : 识别了空字符,continue
do:
继续输入后续字符
//识别两个连续字符为 /" ,则输出 /" ,往后跳过两格
识别两个连续字符为 // ,则输出 // ,往后跳过两格 //避免 / 被重用
识别两个连续字符为 /' ,则输出 /' ,往后跳过两格 //避免 ' 被误判为第一个 ' 的配对符
不是以上情况,则判断位置后移一格字符
while 输入字符 != '
else if 读到 " :
fin >> ch1
输出 " 和 ch1
如果ch1 是双引号: contiune //识别为空串
do:
继续输入后续字符
识别两个连续字符为 /" ,则输出 /" ,往后跳过两格
识别两个连续字符为 // ,则输出 // ,往后跳过两格
不是以上情况,则判断位置后移一格字符
while 输入字符 != "
else : 按正常情况输出 ch
}
*/
/*//测试用例:
//abc/
abc,/
不接着 /
abc,接着/
printf("不可思议/n");///
强/
printf("不可思议/n");/
printf("不可思议/n");
//上面这整个用例可能被病毒利用
//printf(""//n");
printf("%c/n",'"');
//printf("%c/n",''');
//printf("%c/n",'');
printf("'/n");
printf("''/n");
printf("///n");
printf("%c/n",'/');
printf("%c/n",'/'');
printf("/' /n");
printf("/"");
printf("");
printf("//");
printf("///b///"");
printf("%c",'1/3');
printf("%c",'1/1/'');
printf("%c",'1///'');
printf("%c",'1///'/'');
printf("%c",'/"/1');
printf("%c",'/123');
printf("%c",'/x43');
printf("%c",'/好');
printf("%c",'/"/3/"');
printf("%c",'/'/3/'');
printf("/中");
// /*printf("*//*");
*/
// /*/
//2009-03-25
去除cpp中注释的小程序相关推荐
- php小程序码生成并保存,小程序中如何生成小程序码
导语: 小程序是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的梦想,用户扫一扫或者搜一下即可打开应用.也体现了"用完即走"的理念,用户不用关心是否 ...
- uniapp中app分享小程序方法
在uniapp中只需要调用uni.share这个api就可以发起app中分享到小程序,其中id需要绑定小程序管理后台中的id. 但是很多时候会报[share:-3]这个错误,官方给出的解释是:'发送失 ...
- 小程序 小程序中打开其他小程序、小程序跳转其他小程序、微信群聊中打开小程序
1.小程序中打开其他小程序可将要打开的小程序通过半屏的形态快速拉起(1)配置app.json的embeddedAppIdList字段中声明需要通过半屏形态打开的小程序,若不配置将降级为普通的小程序跳转 ...
- 小程序开发过程中常见问题[微信小程序、支付宝小程序]
小程序开发过程中常见问题[微信小程序.支付宝小程序] 正文 一.样式中如何使用background-image呢? background-image支持网络的图片链接或者base64 二.使用自适应单 ...
- 怎么在公众号文章中跳转小程序?
在工作的过程中,小编发现,很多小伙伴会写公众号的文章,但不知道怎么从公众号中跳转小程序,其实只要在文章中放置一个小程序卡片,引导用户在浏览文章的时候点击卡片进入小程序即可,这个只需要以下几个步骤即可: ...
- 安卓APP中启动微信小程序,闪一下无法打开问题
原因是:调用了其他微信依赖包中的内容.下边是在下项目中的详解. APP调用小程序的代码是: String appId = ".....自己的APPid....."; // 填应用A ...
- matlab中累加的小程序,微信小程序学习用demo:数字累加,动态效果
微信小程序-数字累加效果,实现方式都在注释里面,有不足之处希望老司机多多指点 num.gif (77.77 KB, 下载次数: 150) 效果图 2016-12-26 18:07 上传 1.wxml代 ...
- 自动翻译C#文档注释的小程序
在使用visual studio进行代码编写时,它会自动显示代码的文档注释 很多库的文档注释是英文的,这对像我这样的英文菜鸡来说,降低了编程效率.今晚写了个小程序,配合手工操作,实现了文档注释的翻译, ...
- c语言取消注释,实现去除c语言注释的小工具
去除C代码中的注释, 1. 单行注释//: 2. 多行注释/**/: 3. 单行注释以"\"结尾则下一行也为注释: 4. 字符串中的注释不处理. 说是C语言,但其实所有C语系的都可 ...
最新文章
- Smarty变量调节器的使用
- 还在埋头写论文?知网检索的这些小技巧让你有如神助!
- RMAN CONFIGURE解释
- CrashFinder,找到崩溃代码行
- linux定时创建文件,linux下如何创建定时任务
- 算法竞赛中的输入输出框架
- java保存文件的时候提示系统找不到路径_java.io.FileNotFoundException (系统找不到指定的路径。)...
- Feature Scaling(特征缩放)的一些方法和使用选择
- 快捷键截屏_Windows10自带截屏快捷键使用方法大全
- 在QTP中巧用WebTable对象的ChildItem方法进行测试
- RPC框架dubbo架构原理及使用说明
- linux 关闭僵尸进程,linux下的僵尸进程处理办法
- Java中涉及到和金钱有关的属性的类型
- 其实嵌入式编程还是很难很复杂的
- 成成你好呀笔记整理(知识点合集二)
- 顶峰助力微营销眉音老师分析代理政策
- 学校热水系统服务认证
- 什么是中间层,什么是三层网络结构
- 电子工程软件android版,电子工程世界app下载-电子工程世界 安卓版v1.0-PC6安卓网...
- .NET 5 自定义配置(动态配置,配置中心) 案例版
热门文章
- 绿色运营,数据中心还得靠自动化
- 成功解决Exception “unhandled ModuleNotFoundError“No module named ‘face_recognition.cli‘
- 成功解决sys:1: DtypeWarning: Columns (39,41,42,217) have mixed types.Specify dtype option on import or s
- AI:2020年6月22日北京智源大会演讲分享之认知神经基础专题论坛——15:00-15:40刘嘉教授《From Representation to Comp: the Cognitive N》
- ARIMA模型详细讲解
- AtCoder Regular Contest 092 Two Sequences AtCoder - 3943 (二进制+二分)
- Python基础训练题-简单数学公式
- loadrunner与事务有关的函数
- border-radius的兼容问题
- 《YES!B/S!》博客文章导读索引(20080612更新)