思路:
这里,我们首先要对制表符的概念和情况进行了解:制表符的作用是将光标移到最接近8的倍数的位置,使得后面的输出从此开始。换句话说,如果所有数据都紧跟在制表符后面输出,则这些数据只能从第9列、第17列、第25列......开始。
所以对于每一个位置的处使用制表符所需要填补的空格是不同的,计算公式如下:
nbs = (DETAB-pos%DETAB)%DETAB,其中pos为tab所处的位置。
C语言代码实现:
#include<stdio.h> #define DETAB 8 //将制表符替换为适当的空格,并且空格填充到下一个制表符终止位 void main(){ int c,pos,i,nbs; pos = 1; nbs = 0; while((c=getchar())!=EOF){ if(c == ‘\t‘){ nbs = (DETAB-pos%DETAB)%DETAB+1; i = 0; for(;i<nbs;i++){ putchar(‘ ‘); } pos += nbs; }else if(c == ‘\n‘){ putchar(c); pos = 1; nbs = 0; }else{ pos++; putchar(c); } } }
原文:http://www.cnblogs.com/ningvsban/p/3774519.html