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 == ' '){ 23 blankNum = NUMTAB - (listNum % NUMTAB); 24 for(i = 0;i < blankNum; i++){ 25 putchar(' '); 26 } 27 listNum += blankNum; 28 } 29 else if(c == ' '){ 30 listNum = 0; 31 putchar(c); 32 } 33 else{ 34 listNum++; 35 putchar(c); 36 } 37 } 38 39 return 0; 40 }
4.结果
因为dos的制表符是8位,所以自己也定义了八位.输出如下