免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1934 | 回复: 2
打印 上一主题 下一主题

[C] C程序设计语言习题解答答案有问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-05-31 17:59 |只看该作者 |倒序浏览
C程序设计语言联系1-23:
  编写一个删除C语言程序中所有的注释的语句。要正确处理带引号的字符串与字符常量。在C语言程序中,注释不允许嵌套。

以下是习题解答上的答案:
  1. #include <stdio.h>

  2. void rcomment(int c);
  3. void in_comment(void);
  4. void echo_quote(int c);

  5. main()
  6. {
  7.         int c, d;

  8.         while((c = getchar()) != EOF)
  9.                 rcomment(c);
  10.         return 0;
  11. }

  12. void rcomment(int c)
  13. {
  14.         int d;

  15.         if (c == '/')
  16.                 if ((d = getchar()) == '*')
  17.                         in_comment();
  18.                 else if (d == '/') {
  19.                         putchar(c);
  20.                         rcomment(d);
  21.                 } else {
  22.                         putchar(c);
  23.                         putchar(d);
  24.                 }
  25.         else if (c == '\'' || c == '"')
  26.                 echo_quote(c);
  27.         else
  28.             putchar(c);
  29. }

  30. void in_comment(void)
  31. {
  32.         int c, d;

  33.         c = getchar();
  34.         d = getchar();
  35.         while (c != '*' || d!= '/') {
  36.                 c = d;
  37.                 d = getchar();
  38.         }
  39. }

  40. void echo_quote(int c)
  41. {
  42.         int d;

  43.         putchar(c);
  44.         while ((d = getchar()) != c) {
  45.                 putchar(d);
  46.                 if (d == '\\')
  47.                         putchar(getchar());
  48.         }
  49.         putchar(d);
  50. }
复制代码
在echo_quote函数中,if (d == '\\')
                        putchar(getchar());
putchar(getchar())是不是读入字符之后直接打印,不再进行任何处理?如果这样的话,对于最后一位是\的字符串,比如“aaaaaaa\”,程序如何处理?
我在执行的过程中,程序读完类似“aaaaaaa\”这样的字符串之后仍不跳出while循环,直到下一个"出现

论坛徽章:
0
2 [报告]
发表于 2010-05-31 18:07 |只看该作者
'\'表示转义,主要是处理类似'\r', '\n'之类的。'\"'表明字符串内包含双引号,当然要等到下一个双引号出现。

论坛徽章:
0
3 [报告]
发表于 2010-05-31 20:56 |只看该作者
本帖最后由 lambert_fan 于 2010-05-31 21:22 编辑

回复 2# xiexiecn


    谢谢,我在网上查了转义字符,有点明白了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP