码迷,mamicode.com
首页 > 编程语言 > 详细

c语言entab

时间:2014-09-05 13:04:51      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:os   io   ar   for   sp   amp   c   ef   程序   

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

标签:os   io   ar   for   sp   amp   c   ef   程序   

原文地址:http://my.oschina.net/sukai/blog/310504

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!