c语言删除注释

搬运自k&r习题解答:

/*
 * delete comment in C
 */
#include<stdio.h>

#define normal 0

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());
    }
    putchar(d);
}

书中答案rcomment函数中的

else if (d == ‘/‘) {
			putchar(c);
			rcomment(d);
		} 

这个语句看了好久没没明白什么意思,测试程序的话,不处理‘//‘注释,只删除/*  */之间的,不敢确定是不是答案有问题。

估计这是原本应该删除//到换行之间的注释的,若是这样,这个语句应改为:

else if (d == ‘/‘) {
			while(getchar()!=‘\n‘);
		} 
时间: 2024-07-28 21:17:50

c语言删除注释的相关文章

vim的批量注释与删除注释

vim的批量注释与删除注释 方法一:块选择模式 批量注释: Ctrl + v 进入块选择模式,然后移动光标选中你要注释的行,再按大写的I进入行首插入模式输入注释符号如 // 或 #,输入完毕之后,Vim会自动将你选中的所有行首都加上注释. 如图: 取消注释: Ctrl + v 进入块选择模式,选中你要删除的行首的注释符号,注意// 要选中两个,选好之后按d即可删除注释. 如图: 方法二 替换命令 批量注释: 使用下面命令在指定的行首添加注释: :起始行号,结束行号s/^/注释符/g 取消注释:

03-C语言的注释与转义字符

学习重点: 代码注释 转义字符 学习内容: 1.注释可以让复杂的程序易于阅读,而且对程序的功能和运行结果没有任何影响,可以利用其特点进行代码的测试 2.在C语言中注释可以用/*和*/进行块式注释,在/*和*/之间的所有内容都被当做注释,这两个标记可以不在同一行,因此注释一次可以包含多行:也可以使用//进行单行注释,//只能注释它所在行,位于其后的内容.(可能在其他语言也适用) 3.转义字符:C语言还允许使用一种特殊的形式表示字符常量,这种形式是以\开头的字符序列,\表示转义,会将其后面所跟随的一

vim编辑器批量添加和删除注释

添加注释: 方法一: (1)按Control+v(win下面ctrl+q)进入列模式: (2)按大些"I"进入插入模式,输入注释符"#"或者是"//",然后立刻按下ESC(两下) 方法二:替换命令 :起始行号,结束行号s/^/注释符/g 删除注释: 方法一: Ctrl + v 进入块选择模式,选中你要删除的行首的注释符号,注意// 要选中两个,选好之后按d即可删除注释 方法二: :起始行号,结束行号s/^注释符//g 参考文档: http://b

各种语言的注释

web前端相关的语言 JavaScript注释: 1.//-- 单行注释 2./*--*/ 多行注释 CSS注释: /*注释内容*/ HTML注释:<!--注释内容--> 其他语言 C.C++: 1.//-- 单行注释 2./*--*/ 多行注释 3.#if 0  我是注释1  我是注释2  我是注释3    #endif MySQL注释:1.#-- 单行注释2.-- -- 单行注释,两杆之后要加个空格3./*--*/ 多行注释 SQLServer注释:1.---- 单行注释,两杆之后不必加空

删除注释

1. 读取一个.C文件,删除该文件中所有的注释语句.然后写入到新的.C文件里. 要求: 1. 删除注释语句功能采用动态链接库形式 2. 在功能实现的基础上: --单元测试要足够充分 --要通过所有的MISRA C的检查 --代码要符合代码规范. 分析: 读取文件 (读取整个文件的大小限定为100M,如果大于了这个值,就不处理,报错) | | 分析文件 () | | 处理文件 | | 写文件 单元测试: 正常输入 .边界输入.非法的输入 #include<stdio.h> int main()

【C语言】注释转换 ——C注释转换为标准C++语言注释

一.具体要求: 1:C风格的注释/* */注释转换为标准C++风格//注释 2://   风格的注释保持原样 3:所有的转换需要符合语法规则 4:注释转换需要支持注释嵌套 二.转换要求: 注释的嵌套情形很多,这里只是举例,你需要遵照C/C++语言的注释规则来编写代码,我不会仅测试这里的例子.                                                          三.注意事项: 1.除以下两种情况的修改,源文件转换后不能有任何其它的修改: a.多余的注释

快速删除注释

思路:把注释都替换为为空,这样就解决了删除注释的目的. 这里我们需要用到正则表达式 在options 中选择Regular expression .在上面方框填入正则表达式 删除 java 注释 /* */:/\*{1,2}[\s\S]*?\*/ 删除 java 注释 //://[\s\S]*?\n 删除xml注释:<!-[\s\S]*?--> 删除空白行:^\s*\n \n或者是\r\n  或者是\r 都可能是换行符,要看你的系统是windows还是Unix/Linux或者是mac的系统.

2.3-Java语言基础(注释)

2.3  注释 用于注解说明解释程序的文字就是注释. 提高了代码的阅读性. Java中的注释格式: ?  单行注释 ?  格式: //注释文字 ?  多行注释 ?  格式: /* 注释文字*/ ?  文档注释 ?  格式:/** 注释文字*/ 对于单行和多行注释,被注释的文字,不会被JVM(java虚拟机)解释执行. 对于文档注释,是java特有的注释,其中注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档. 注释是一个程序员必须要具有的良好编程

领扣(LeetCode)删除注释 个人题解

给一个 C++ 程序,删除程序中的注释.这个程序source是一个数组,其中source[i]表示第i行源码. 这表示每行源码由\n分隔. 在 C++ 中有两种注释风格,行内注释和块注释. 字符串// 表示行注释,表示//和其右侧的其余字符应该被忽略. 字符串/* 表示一个块注释,它表示直到*/的下一个(非重叠)出现的所有字符都应该被忽略.(阅读顺序为从左到右)非重叠是指,字符串/*/并没有结束块注释,因为注释的结尾与开头相重叠. 第一个有效注释优先于其他注释:如果字符串//出现在块注释中会被忽