鱼C论坛

 找回密码
 立即注册
查看: 2197|回复: 2

编写一个程序detab,用正确的空格数替换输入中的制表符,直到下一个制表符停止。假...

[复制链接]
发表于 2020-4-27 17:29:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
编写一个程序detab,用正确的空格数替换输入中的制表符,直到下一个制表符停止。假设一组固定的制表符停止,比如每n列一次。n应该是一个变量还是一个符号参数?
  1. 1 /**
  2. 2 *   编写程序detab,将输入中的制表符替换成数目的空格,
  3. 3 *   使空格充满到下一个制表符终止位的地方.
  4. 4 *   制表符:制表符(也叫制表位)的功能是在不使用表格的情况下在垂直方向按列对齐文本。
  5. 5 *   2018-4-9
  6. 6 *   Author:TriompheL
  7. 7 */
  8. 8
  9. 9 #include <stdio.h>
  10. 10
  11. 11 #define NUMTAB 8
  12. 12
  13. 13 int main()
  14. 14 {
  15. 15     /*
  16. 16     *  blankNum : 将要输出的空格数目
  17. 17     *  listNum: 每行第一个字符开始,当前字符位置.
  18. 18     */
  19. 19     int c,listNum=0,blankNum,i;
  20. 20
  21. 21     while( (c=getchar()) != EOF){
  22. 22         if(c == '\t'){
  23. 23             blankNum = NUMTAB - (listNum % NUMTAB);
  24. 24             for(i = 0;i < blankNum; i++){
  25. 25                 putchar(' ');
  26. 26             }
  27. 27             listNum += blankNum;
  28. 28         }
  29. 29         else if(c == '\n'){
  30. 30             listNum = 0;
  31. 31             putchar(c);
  32. 32         }
  33. 33         else{
  34. 34             listNum++;
  35. 35             putchar(c);
  36. 36         }
  37. 37     }
  38. 38
  39. 39     return 0;
  40. 40 }
复制代码




blankNum = NUMTAB - (listNum % NUMTAB);
这一步什么意思,看不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-27 17:44:24 | 显示全部楼层
我是想问问什么制表符跳过的空格是{8-n%8}个呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-27 17:48:11 | 显示全部楼层
我知道了,制表符不一定是8位,他会跳到离8的倍数最近的位置
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-2 23:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表