码迷,mamicode.com
首页 > 编程语言 > 详细

c语言删除注释

时间:2014-09-07 17:22:35      阅读:862      评论:0      收藏:0      [点我收藏+]

标签:io   ar   问题   sp   c   amp   ef   程序   bs   

搬运自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‘);
		} 



c语言删除注释

标签:io   ar   问题   sp   c   amp   ef   程序   bs   

原文地址:http://my.oschina.net/sukai/blog/311390

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!