当前位置: 首页 > news >正文

C语言-删除注释

C语言中的注释,不嵌套,一律使用/*   */的形式。不过双引号中的/*  */则不能算是注释。

以下是正确的代码

/*
 * ==================================================
 *
 *       Filename:  1-23.c
 *
 *    Description:  删除c风格的注释,读入的数据为.c程序源代码
 *					copy自The C Answer Book
 *
 *        Version:  0.01
 *        Created:  2013年09月07日 星期六 10时34分45秒
 *         Author:  HaxtraZ, zchrissirhcz@163.com
 *        Company:  ZJUT
 *
 * ==================================================
 */
#include

void rcomment(int c);
void in_comment(void);
void echo_quote(int c);

main() {
	int c;

	while ((c=getchar()) != EOF)
		rcomment(c);
	return 0;
}

void rcomment(int c) {
	int d;

	if (c=='/') {
		if ((d=getchar())=='*')
			in_comment();
		else if (d=='/')  {
			putchar(c);
			rcomment(d);
		} else {
			putchar(c);
			putchar(d);
		}
	} else if (c=='\'' || c=='"')
		echo_quote(c);
	else
		putchar(c);
}

void in_comment(void) {
	int c, d;

	c = getchar();
	d = getchar();
	while (c!='*' || d!='/') {
		c = d;
		d = getchar();
	}
}

void echo_quote(int c) {
	int d;

	putchar(c);
	while ((d=getchar())!=c) {
		putchar(d);
		if (d=='\\')
			putchar(getchar());
		/*这一句是处理转义的单引号或者双引号(由c决定)
		 * 例如,printf("Nice\"day!");一句,如果不处理,则会进死循环*/
	}
	putchar(d);
}

  

相关文章:

  • c#调用java
  • java 动态代理
  • 字符缓冲流BufferedWriter和BufferedWriter
  • 修改BASH的配色
  • OpenStack快照分析:(三)从磁盘启动云主机离线(在线)快照分析
  • php substr说明
  • alterdialog
  • MobIM-API说明
  • mysql5.5.15配置主从数据库
  • 京东美团研发面经
  • windos使用nslookup查询mx记录
  • canvas - drawImage()方法绘制图片不显示的问题
  • JavaScript的性能优化:加载和执行
  • 建站利器 | 阿里巴巴上线静态开源站点搭建工具 Docsite
  • 【SDOI2009】Bill的挑战
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • IndexedDB
  • JavaScript新鲜事·第5期
  • Nodejs和JavaWeb协助开发
  • React Transition Group -- Transition 组件
  • vue.js框架原理浅析
  • 半理解系列--Promise的进化史
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 关于使用markdown的方法(引自CSDN教程)
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 如何合理的规划jvm性能调优
  • 手机端车牌号码键盘的vue组件
  • 新手搭建网站的主要流程
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 在weex里面使用chart图表
  • RDS-Mysql 物理备份恢复到本地数据库上
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • $jQuery 重写Alert样式方法
  • (1)SpringCloud 整合Python
  • (C++20) consteval立即函数
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (NSDate) 时间 (time )比较
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (二)windows配置JDK环境
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (数据结构)顺序表的定义
  • (小白学Java)Java简介和基本配置
  • (转)大型网站架构演变和知识体系
  • *p++,*(p++),*++p,(*p)++区别?
  • .gitignore
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .net MySql
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .NET大文件上传知识整理