#include <stdio.h>
void rcomment (int c);
void in_comment_one (void); //该函数用于处理/*及*/的注释符
void in_comment_two (void); //该函数用于处理//的单行注释符
void echo_quote (int c);
int main(void)
{
int c;
while ((c = getchar()) != EOF)
rcomment(c);
return 0;
}
void rcomment (int c)
{
int d;
if (c == '/')
if ((d = getchar()) == '*')
in_comment_one();
else if (d == '/')
{
in_comment_two();
}
else
{
putchar(c);
putchar(d);
}
else if (c == '\'' || c == '"') //处理''或""中包含的字符或字符串
echo_quote (c);
else
putchar (c);
}
void in_comment_one (void)
{
int c, d;
c = getchar();
d = getchar();
while (c != '*' || d != '/') /* 一直找到注释结尾 */
{
c = d;
d = getchar();
}
}
void in_comment_two (void)
{
int c;
c = getchar();
while (c != '\n') /* 一直找到注释结尾 */
{
c = getchar();
}
ungetc(c, stdin); //读到的换行符返回到缓冲区当中
}
void echo_quote (int c)
{
int d;
putchar (c);
while ((d = getchar()) != c)
{
putchar (d);
if (d == '\\') //避免把跟在反斜杠后面的引号看做是结束引号,直接将其输出
putchar (getchar());
}
putchar (d);
}
编写一个删除C语言程序中所有注释语句的程序
最新推荐文章于 2024-08-14 21:18:12 发布