#include<stdio.h>
#define TABINC 8
int main()
{
int c, nb, nt, pos;
nb = 0;
nt = 0;
for(pos = 1; (c = getchar()) != EOF; ++pos) //获得横坐标
if(c == ' '){ //这对大片的空格有效 若是一个制表符的距离内含有两个不相邻的空格呢
if(pos % TABINC != 0) //pos坐标不在tabinc的整数倍上
++nb;
else{ //空格的坐标在制表符的位置
nb = 0;
++nt;
}
}else{ //在输入不是空格时 若是前面有制表符 会立即打出
for( ; nt > 0; --nt)
putchar('\t');
if(c == '\t') //将空格由\t代替
nb = 0;
else
for( ; nb > 0; --nb)
putchar(' ');
putchar(c);
if(c == '\n')
pos = 0;
else if(c == '\t') //将空格由\t代替后,需要
pos = pos + (TABINC - (pos-1) % TABINC) - 1;//直接到下一个制表符的地址
}
}
#define TABINC 8
int main()
{
int c, nb, nt, pos;
nb = 0;
nt = 0;
for(pos = 1; (c = getchar()) != EOF; ++pos) //获得横坐标
if(c == ' '){ //这对大片的空格有效 若是一个制表符的距离内含有两个不相邻的空格呢
if(pos % TABINC != 0) //pos坐标不在tabinc的整数倍上
++nb;
else{ //空格的坐标在制表符的位置
nb = 0;
++nt;
}
}else{ //在输入不是空格时 若是前面有制表符 会立即打出
for( ; nt > 0; --nt)
putchar('\t');
if(c == '\t') //将空格由\t代替
nb = 0;
else
for( ; nb > 0; --nb)
putchar(' ');
putchar(c);
if(c == '\n')
pos = 0;
else if(c == '\t') //将空格由\t代替后,需要
pos = pos + (TABINC - (pos-1) % TABINC) - 1;//直接到下一个制表符的地址
}
}