[讨论]此程序是否有错?
目的:
将空格串替换为最少的制表符和空格,但要保持单词之间的空格不变!
代码:
#include<stdio.h>
#define TABINC 8
void main()
{
int c,nb,nt,pos;
nb=0;//of blanks necessary
nt=0;//of tabs necessary
for(pos=1;(c=getchar())!=EOF;++pos)
if(c==' ')
{
if(pos%TABINC!=c)
++nb;//increment of blanks
else
{
nb=0;//reset of blanks
++nt;//one more tab
}
}
else
{
for(;nt>0;--nt)
putchar('\t');//output tabs
if(c=='\t');//forget the blanks
nb=0;
else //output blanks
for(;nb>0;--nb)
putchar(' ');
putchar(c);
if(c=='\n')
pos=0;
else if(c=='\t')
pos=pos+(TABINC-(pos-1)%TABINC)-1;
}
}