lhm的博客

平时的一些学习笔记

编写一个删除C语言程序中所有注释语句,正确处理带引号的字符串与字符常量

//这是书上的例题,//后面的内容不能删除  字符串内的/**/能原样打印

#include<stdio.h>


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

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());  //这句话是为了让\后出现的引号不至于跳出上面的while循环 而照原样打印出来
    }
    putchar(d);
}
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012323667/article/details/52385159
个人分类: C语言
上一篇将较长的输入行折成短一些的两行或多行
下一篇编写一个程序,查找C语言中的基本语法错误,如圆括号、方括号、花括号不配对等,正确处理引号与注释
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭