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

相关文章推荐

删除C语言程序中所有的注释语句,代码实现

学习《C程序设计语言》到第1章最后,有一道题目: 编写一个删除C语言程序中所有的注释语句。要正确处理带引号的字符串与字符常量。在C语言中,注释不允许嵌套。 有一种解法非常好:状态机。在各种状态之间跳转...

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

#include void rcomment (int c); void in_comment_one (void); //该函数用于处理/*及*/的注释符 void in_comment_two...

习题课第一次作业:1、去除C程序中的注释

1、去除C程序中的注释 总时间限制: 1000ms 内存限制: 65536kB 描述: C程序的注释用/…/来表示。请写一个程序,将输入的C程序源代码中的注释去掉,输出去掉注释之后的源代...

删除C程序中注释语句

最近在看《C程序设计语言》,发现真是一本好书。后悔当初学C的时候教材为什么不是这本书而是乔林和老谭呢?看了一会才发现,这本书不适合刚入门的C初学者。学过C之后再看这本书,会发现一些处理的细节和编程的规...

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

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

关于c语言中字符常量,变量的两道经典例题

作为初级c语言菜鸟,用写博客来做笔记并分享给大家! 希望有不严谨之处各位大神指出! 首先,字符常量变量都是以‘ ’括起来。 (1)以下选择中合法的c语言字符常量是(D) (A)...

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

源自《The C Programming Language》P25 p1-23:     编写一个删除C语言程序中所以的注释语句。要正确处理带引号的字符串和字符常量。在C语言中,注释不允许嵌套。   ...

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

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

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

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

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

呃呃呃好多基础知识忘的都差不多了,再瞅瞅,顺便记录一下今天都学了什么 对对,今天上午还看了下接口测试那面,哎哟~要继续努力呢 Sizeof与Strlen的区别与联系 一、sizeof     ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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