JerryLeeSir 发表于 2020-4-27 17:29:42

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

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



blankNum = NUMTAB - (listNum % NUMTAB);
这一步什么意思,看不懂

JerryLeeSir 发表于 2020-4-27 17:44:24

我是想问问什么制表符跳过的空格是{8-n%8}个呢

JerryLeeSir 发表于 2020-4-27 17:48:11

我知道了,制表符不一定是8位,他会跳到离8的倍数最近的位置
页: [1]
查看完整版本: 编写一个程序detab,用正确的空格数替换输入中的制表符,直到下一个制表符停止。假...