【C语言】练习1-23
- 题目来源:《The C programming language》中的习题
- 练习1-23: 写一个删除C语言程序中所有的注释语句。要正确处理带引号的字符串与字符常量。在C语言中,注释不允许嵌套
思路:
注释语句分为两种://和/* */。在代码中,我们需要做的是,删除所有的注释语句。以下分两种情况来分析:
- 注释符号为//的时候,首先我们读取字符的时候,我们会按顺序读取,读取第一个字符/,我们需要把这个字符存入tmp中,如果接下来的字符仍然为/,说明这一行都是注释,需要直接跳过而不输出,直到遇到换行。其他情况的时候,则直接原样输出即可。
- 注释符号为/*开头的时候,首先,我们同样会按顺序先读取/字符,并存入tmp中,如果下一个字符为*,则说明开始进入了注释中,直到遇到*/结束,而不管是否为换行符。
C语言代码实现:
#include<stdio.h> void main(){ int c,former,comment; former=-1; comment=0; while((c=getchar())!=EOF){ if(comment==1){ // 注释符类型为// if(c=='\n'){ putchar(c); former=-1; comment=0; } }else if(comment==2){ // 注释符类型为/* */ if(c=='/' && former=='*'){ former=-1; comment=0; }else{ former=c; } }else{ if(c=='/'){ if(former=='/'){ //注释符为//的开始 comment=1; } }else if(c=='*'){ if(former=='/'){ //注释符为/* */的开始 comment=2; }else{ putchar(c); } }else{ if(former=='/'){ putchar('/'); } putchar(c); } former=c; } } }