您的位置:首页 > 其它

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

2015-01-28 00:15 309 查看
/*
* K&R2 1-21
* Author: Donmmi
* Email:teddy_liu@live.com
 */

#include <stdio.h>

/* 4 spaces to a tab */
#define NTAB    4

int 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  kr2 1-21
相关文章推荐