编写一个删除C语言程序中所有注释语句!

ljf913 2011-07-31 04:40:42
#include<stdio.h>

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

void main()
{
int c, d;

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);
}

谁能给我解释一下echo_quote这个函数有什么作用?我觉得没有它也没有什么关系.
...全文
525 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaoyuqi 2011-07-31
  • 打赏
  • 举报
回复
是有点乱啊。以后整理一下思路吧。
nightkids_008 2011-07-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ljljlj 的回复:]
引用 2 楼 c_losed 的回复:
你要删除的话 首先要打开文件路径
然后对文件内容进行过滤
这代码和题目有点牛头不对马嘴呀
你让哥用cmd写c程序么。。。

人家重定向输入的,不行吗?
rcomment.exe < test.c
[/Quote]
N久没用都忘记了。。谢谢提醒。。。
ljhhh0123 2011-07-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 c_losed 的回复:]
你要删除的话 首先要打开文件路径
然后对文件内容进行过滤
这代码和题目有点牛头不对马嘴呀
你让哥用cmd写c程序么。。。
[/Quote]
人家重定向输入的,不行吗?
rcomment.exe < test.c
nightkids_008 2011-07-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 c_losed 的回复:]
你要删除的话 首先要打开文件路径
然后对文件内容进行过滤
这代码和题目有点牛头不对马嘴呀
你让哥用cmd写c程序么。。。
[/Quote]
确实。。。你不从文件读取写好的C程序么?
shujuhuifu802 2011-07-31
  • 打赏
  • 举报
回复
[Quote=引用楼主 ljf913 的回复:]
#include<stdio.h>

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

void main()
{
int c, d;

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

void rcomment(……
[/Quote]
正解!
另:楼主这段程序好像不处理//
c_losed 2011-07-31
  • 打赏
  • 举报
回复
你要删除的话 首先要打开文件路径
然后对文件内容进行过滤
这代码和题目有点牛头不对马嘴呀
你让哥用cmd写c程序么。。。
Jade0709 2011-07-31
  • 打赏
  • 举报
回复
else if (c == '\'' || c == '"')
echo_quote(c);
这是因为单引号和双引号中的//和/**/(都在“”中)不起注释的作用仅代表字符,所以要将其输出,所以用echo_quote(c);特殊处理。
C语言课堂练习习题集及答案 《C语言程序设计》自主学习检验题汇编 第一、二章 C程序与算法 单项选择题 1. 将汇编语言编写程序翻译成目标程序程序是( ) A)解释 B)编译 C)汇编 D)目标 2. 不属于面向机器语言的是 ( ) A)符号语言 B)二进制语言 C)汇编语言 D)C语言 3. 将高级语言编写程序翻译成目标程序程序是()。 A)解释 B)编译 C)汇编 D)二进制 4. 不属于高级语言的是()。 A)BASIC B)C C)ALGOL D)符号语言 5. 程序段的基本结构,不包含()。 A)函数结构 B)循环结构 C)顺序结构 D)分支结构 6、C语言程序的最小单位是( )。 A、程序行 B、语句 C、函数 D、字符 7、以下说法正确的是( )。 A、 在C语言,要调用的函数必须在main()函数定义 B、 C语言程序总是从第一个定义的函数开始执行 C、 C语言程序,main()函数必须放在程序的开始部分 D、 C语言程序总是从main()函数开始执行 8、以下对C语言描述正确的是( )。 A、 C语言程序可以有重名的函数 B、 C语言程序要求每行只能书写一条语句 C、 C语言程序注释可以出现在任何位置 D、 最小的C源程序没有任何内容 9、对C语言程序执行过程描述正确的是( )。 A、 从main() 函数开始执行,到main()函数结束 B、 从程序的第一个函数开始执行,到最后一个函数结束 C、 从main函数开始执行,到源程序的最后一个函数结束 D、 从第一个函数开始执行,到main函数结束。 …………………………

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧