关闭

练习1-21 编写程序entab,将空格串替换为最少数量的制表符和空格,但要保持单词之间的间隔不变

756人阅读 评论(0) 收藏 举报
分类:

每8位,若空格填满8位,则用制表符替换;若空格不满8位,则用空格替换,一次性替换满空格。若遇制表符,位置pos要向前TABINC-(pos-1)%TABINC-1位(pos-1+TABINC-(pos-1)%TABINC);若遇换行符,pos要置零(for循环里会加1)。

#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;
        }

    }
}

当使用一个制表符或者一个空格都可以到达下一个制表符终止位时,此程序选用制表符替换。若选用空格替换,在输入’a’,输入6个空格,输入制表符的情况下,将用7个空格替换,而选用制表符,只需要一个制表符替换。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:34474次
    • 积分:997
    • 等级:
    • 排名:千里之外
    • 原创:68篇
    • 转载:0篇
    • 译文:0篇
    • 评论:11条
    最新评论