首页 > 代码库 > c语言entab

c语言entab

k&r习题,将空格替换为制表。
参考答案:
#include<stdio.h>
#define TABINC 8

main()
{
    int c,nb,nt,pos;
    nb=nt=0;
    for(pos=1;(c=getchar())!=EOF;++pos){
        if(c==‘ ‘){
            if(pos%TABINC != 0)
                ++nb;
            else{
                nb=0;
                ++nt;
            }
        }else{
            for( ;nt>0;--nt)
                putchar(‘\t‘);
            if(c==‘\t‘)
                nb=0;
            else
                for( ;nb>0;--nb)
                    putchar(‘*‘);// 将空格换成*,便于观察
            putchar(c);
            if(c==‘\n‘) 
                pos=0;
            else if(c==‘\t‘)
                pos=pos+(TABINC-(pos-1)%TABINC)-1;
        }
    }
}



最后处理pos的部分好像不用这么复杂,可以写成这样(自己测试和原程序效果一样,不敢确定完全正确):
if(c==‘\n‘ || c==‘\t‘)
    pos=0;




c语言entab