练习1-20 编写程序detab,将输入中的制表符替换成适当数目的空格.

1.问题描述

  编写程序detab,将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止位的地方.

  假设制表符终止位的位置是固定的, 换句话说每隔n列就会出现一个制表符终止位.
2.描述

  自己讲问题读了很多遍,没有懂什么意思.后来百度制表符,才明白其中意思

  制表符:制表符(也叫制表位)的功能是在不使用表格的情况下在垂直方向按列对齐文本。

  明白了什么是制表符,问题也轻松解决了.

3.代码

 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 }

4.结果

  因为dos的制表符是8位,所以自己也定义了八位.输出如下

 

   

posted @ 2018-04-11 00:06  Tri0mphe  阅读(899)  评论(0编辑  收藏  举报