the c programing language 练习1-21 将空格字符替换为最少数量的制表符和空格

来源:互联网 发布:阿里云服务器优惠券 编辑:程序博客网 时间:2024/05/22 12:46
/* * K&R2 1-21 * Author: Donmmi * Email:teddy_liu@live.com */#include <stdio.h>/* 4 spaces to a tab */#define NTAB    4int main(void) {    /*     * len is the nums of input charactor     * if (c == ' ' && len % NTAB == 0) translate the space(s) to tab     */    int     c, len, nspace, flag;    len = nspace = flag = 0;    while ((c = getchar()) != EOF) {        ++len;        if (c == ' ') {            if (len % NTAB == 0) { /* space(s) translate to tab */                if (flag == 0)                    putchar('\t');                flag = 1;                nspace = 0;            } else                ++nspace;        } else {            /*             * If the next charactor is not space and can't translate to tab             * then output saved space and the charactor             */            while (nspace) {                putchar(' ');                --nspace;            }            putchar(c);            if (c == '\n')                len = 0;            flag = 0;        }    }    return 0;}

记录字符个数len,和连续空格个数nspace

如果下个字符不为空格则输出之前保存的空格和非空格字符

如果下个字符为空格,根据len%NTAB判断是否可以将空格转换为tab

0 0
原创粉丝点击