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

原创 2016年08月31日 15:03:37

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

#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);
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

Presto:Facebook的分布式SQL查询引擎

背景 Facebook是一家数据驱动的公司。 数据处理和分析是Facebook为10亿多活跃用户开发和交付产品的核心所在。 我门拥有世界上最大的数据仓库之一,存储了大约 300PB 以上的数据。...

mfc下添加皮肤文件 SkinPPWTL,.ssk

一.使用皮肤 1.将SkinPPWTL.lib 、skinppwtl.dll 、SkinPPWTL.h三个文件及相应皮肤(**.ssk)拷贝至工程文件夹下;一般还要将这些文件放在Debug文件夹...

练习1-23 编写一个删除C语言程序中所有的注释语句。要正确处理带引号的字符串与字符常量

最简单情形/* abc */只出现在注释中 #include #define MAXCHAR 10000 char line[MAXCHAR]; int pos; int detnote(in...

【1-23】编写一个删除C语言程序中所有的注释语句。要正确处理带引号的字符串与字符常量。再c语言中,注释不允许嵌套。

状态机编程思想 @Link: http://www.cnblogs.com/zhanghaiba/p/3569928.html http://blog.csdn.net/yuezhiren/art...

练习6.1 上述getword函数不能正确处理下划线、字符串常量、注释及预处理器控制指令。请编写一个更完整的getword函数

函数getword,形参word与变量重名,既是输入也是输出,相似的还可见第114页struct point addpoint中的p1。这里写代码片...

C程序设计语言练习1-23 编写一个删除C语言程序中所有的注释语句

本程序运行后,将要求用户输入一个当前目录下的C源码程序文件名,读取后,将文件中的所有注释删除掉,然后另存为*_noc.ext文件,*中可以包含多个点,.ext可以为空(即没有文件扩展名)。...
  • ycjnx
  • ycjnx
  • 2017年06月23日 16:54
  • 534

struts2中用OGNL表达式定义字符串常量与单个字符常量需要注意的一个小细节

具体记录如下: 注意上面红色部分的标识。当定义的变量为单个字符是,必须外面是单引号,字符用双引号引起。 附:转载OGNL表达式相关的知识点: OGNL的全称是O...
  • Alsyuan
  • Alsyuan
  • 2017年06月14日 22:11
  • 219

杂杂的基础知识【Sizeof与Strlen&strcpy和memcpy&字符串常量和字符常量】

呃呃呃好多基础知识忘的都差不多了,再瞅瞅,顺便记录一下今天都学了什么 对对,今天上午还看了下接口测试那面,哎哟~要继续努力呢 Sizeof与Strlen的区别与联系 一、sizeof     ...

堆、栈、程序区、静态数据区、字符常量区的介绍与区别

自己总结一下关于内存分区的基础知识:         先上图:     在VS测试中发现,字符常量区(只读数据区)在编译时候与静态数据区放在了一起。因此在静态数据区的几种类型没有独立的地址...

删除C语言程序中所以的注释语句(有疑问)

     源自《The C Programming Language》P25 p1-23:     编写一个删除C语言程序中所以的注释语句。要正确处理带引号的字符串和字符常量。在C语言中,注释不允许嵌...
  • roma823
  • roma823
  • 2011年04月26日 17:21
  • 3895
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:编写一个删除C语言程序中所有注释语句,正确处理带引号的字符串与字符常量
举报原因:
原因补充:

(最多只允许输入30个字)