- 论坛徽章:
- 0
|
C程序设计语言联系1-23:
编写一个删除C语言程序中所有的注释的语句。要正确处理带引号的字符串与字符常量。在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());
- }
- putchar(d);
- }
复制代码 在echo_quote函数中,if (d == '\\')
putchar(getchar());
putchar(getchar())是不是读入字符之后直接打印,不再进行任何处理?如果这样的话,对于最后一位是\的字符串,比如“aaaaaaa\”,程序如何处理?
我在执行的过程中,程序读完类似“aaaaaaa\”这样的字符串之后仍不跳出while循环,直到下一个"出现 |
|