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

TI 问题

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

将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止位的地方

#include #define  TABINC  8 //定义每个TABINC(8)个位置会出现一个制表位 int main() {     int c, nb, pos;     nb...
  • ilyfeng1314
  • ilyfeng1314
  • 2011年08月19日 14:03
  • 3456

entab函数

#include #define TABINC 8 int main(void) { int c,nb,nt,pos; nb=0; nt=0; for(pos=1;(c=getchar())...
  • leafinsnowfield
  • leafinsnowfield
  • 2014年12月13日 20:47
  • 228

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

1、制表符停止位间隔一样的entab简单程序#include #include #define TABINC 8main(int argc,char *argv[]) { int c,nb...
  • Civil_CHOW
  • Civil_CHOW
  • 2016年07月06日 23:05
  • 463

编写程序detab,将输入中的制表符换成适当数目的空格

#include #define TABINC    5 main() {     int c, nb, pos;     nb = 0;     pos = 1;     wh...
  • u012323667
  • u012323667
  • 2016年08月28日 10:48
  • 802

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

这里写代码片
  • Civil_CHOW
  • Civil_CHOW
  • 2016年07月11日 23:36
  • 348

JSP中的转义符

GOOGLE搜转义符,几乎全部都是PHP的,就是很少关于JSP的。特补充一下转义序列 含义 /n 回车(/u000a) /t 水平制表符(/u0009) /b 空格(/u0008) /r 换行...
  • szliszt
  • szliszt
  • 2007年07月08日 23:46
  • 8472

第7周 C语言程序设计(新2版) 练习1-21 空格串替换为最小数目的空格和制表符

问题及答案: /*空格串替换为最小数目的空格和制表符*/ #include #define TABINC 8 // 每隔TABINC个位置就会出现一个制表符 /*程序设计思想找出全部空格*/ ...
  • Emperor_21AD_ShiDi
  • Emperor_21AD_ShiDi
  • 2016年05月13日 07:54
  • 603

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

每8位,若空格填满8位,则用制表符替换;若空格不满8位,则用空格替换,一次性替换满空格。若遇制表符,位置pos要向前TABINC-(pos-1)%TABINC-1位;若遇换行符,pos要置零(for循...
  • Civil_CHOW
  • Civil_CHOW
  • 2016年05月31日 16:55
  • 1060

C程序设计(第二版 新版)第五章 习题

1.getline(char *line, int limit) 输出的形式3种。(5.6中遇到) /* getline(char *line,int limit)函数的line结果有3种: 1. 字...
  • chenyiming_1990
  • chenyiming_1990
  • 2013年07月19日 15:48
  • 1422
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:练习1-21 编写程序entab,将空格串替换为最少数量的制表符和空格,但要保持单词之间的间隔不变
举报原因:
原因补充:

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