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

原创 2016年05月31日 16:55:30

每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个空格替换,而选用制表符,只需要一个制表符替换。

相关文章推荐

练习5-11 修改程序entab和detab,使他们接受一组作为参数的制表符停止位。如果启动程序时不带参数,则使用默认的制表符停止位设置

1、制表符停止位间隔一样的entab简单程序#include #include #define TABINC 8main(int argc,char *argv[]) { int c,nb...

练习5-12 对程序entab和detab的功能做一些扩充,以接受下列缩写的命令:entab -m +n表示制表符从第m列开始,每隔n列停止

这里写代码片

TI 问题

练习 1-20 编写程序 detab,将输入中的制表符替换成适当数目的空格,使空格充满到 下一个制表符终止位的地方。假设制表符终止位的位置是固定的,比如每隔n 列就会出现一 个制表符终止位。n...
  • TitiWy
  • TitiWy
  • 2015年07月08日 15:58
  • 253

第7周 C语言程序设计(新2版) 练习1-18 删除空格制表符 (程序不能正确运行)

问题及代码: /*删除每个输入行末尾的空格及制表符, 并删除完全是空格的行*/ #include #define MAXLINE 1000 int getline(char line[],...

给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。 给定一个string stringA和一个string stri

**给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。 给定一个string stringA和一个string s...

如何计算换行符、空格与制表符的个数(以及为何不能用此法来算单词数)

单词数计算问题

scala 替换段落中的多个空格、换行、制表符

scala 替换段落中的多个空格、换行、制表符

Java 替换段落中的多个空格、换行、制表符

Java 替换段落中的多个空格、换行、制表符package com.juanpi.bi;/** * Created by gongzi on 2017/2/10. */ public class ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:练习1-21 编写程序entab,将空格串替换为最少数量的制表符和空格,但要保持单词之间的间隔不变
举报原因:
原因补充:

(最多只允许输入30个字)