练习5-12 对程序entab和detab的功能做一些扩充,以接受下列缩写的命令:entab -m +n表示制表符从第m列开始,每隔n列停止
来源:互联网 发布:怎么查看软件注册表 编辑:程序博客网 时间:2024/06/07 17:23
答案所给程序思路简单:
#include <stdio.h>void esettab(int argc,char *argv[],char *tab);void entab(char *tab);int tabpos(int pos,char *tab);#define MAXLINE 100#define TABINC 8#define YES 1#define NO 0main(int argc,char *argv[]){ char tab[MAXLINE+1]; esettab(argc,argv,tab); entab(tab); return 0;}void entab(char *tab){ int c,pos; int nb=0; int nt=0; for(pos=1;(c=getchar())!=EOF;pos++){ if(c==' '){ if(tabpos(pos,tab)!=YES) ++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') while(tabpos(pos,tab)!=YES) ++pos; } }}#include <stdlib.h>void esettab(int argc,char *argv[],char *tab){ int i,inc,pos; if(argc<=1) for(i=1;i<=MAXLINE;i++) if(i%TABINC==0) tab[i]=YES; else tab[i]=NO; else if(argc==3 && *argv[1]=='-' && *argv[2]=='+'){ pos=atoi(&(*++argv)[1]); inc=atoi(&(*++argv)[1]); for(i=1;i<=MAXLINE;i++) if(i!=pos) tab[i]=NO; else{ tab[i]=YES; pos+=inc; } } else{ for(i=1;i<=MAXLINE;i++) tab[i]=NO; while(--argc>0){ pos=atoi(*++argv); if(pos>0 && pos<=MAXLINE) tab[pos]=YES; } }}int tabpos(int pos,char *tab){ if(pos>MAXLINE) return YES; else return tab[pos];}
命令行输入exam5-12 6,回车,再输入6个空格、制表符、a:
a
输出两个制表符、a:
a
0 0
- 练习5-12 对程序entab和detab的功能做一些扩充,以接受下列缩写的命令:entab -m +n表示制表符从第m列开始,每隔n列停止
- 练习5-11 修改程序entab和detab,使他们接受一组作为参数的制表符停止位。如果启动程序时不带参数,则使用默认的制表符停止位设置
- 练习1-21 编写程序entab,将空格串替换为最少数量的制表符和空格,但要保持单词之间的间隔不变
- 显示 DataGridView 第 m 行 n 列 的内容
- m个人围成一圈,每隔n个人出列,求出列的顺序
- excel sheet的 某列(m*n行) 快速复制到 m行n列区域
- 【Java】给定两个32位的整数N与M,以及表示比特位置的i与j。编写一个方法,将M插入N,使得M从N的第 j 位开始,到第 i 位结束。
- 设有n个人依围成一圈,从第1个人开始报数,数到第m个人出 列,然后从出列的下一个人开始报数,数到第m个人又出列,…,如此反复到所 有的人全部出列为止。设n个人的编号分别为1,2,…,n,打印出出列的顺
- 从键盘输入行数m,列数n,从堆上动态分配一个m行,n列的int型二维数组,并从键盘
- JAVA将M行N列的矩阵交换行和列
- ACM题目:第一行输入n m,第二行输入一个数列,n为数列长度,m为要插入的值,排序后输出,m n为零时退出程序
- C语言 - ACM题目:第一行输入n m,第二行输入一个数列,n为数列长度,m为要插入的值,排序后输出,m n为零时退出程序
- 在MySQL中,可以用 Limit 来查询第 m 列到第 n 列的记录
- 用Java转换n行m列的二维数组转换为m行n列的数组输出
- m表示为一些不超过n的自然数之和
- m表示为一些不超过n的自然数之和
- 用高斯消元法求M行N列的方程(含N个未知数,N个方程)的解
- 数据库中,从第N条记录开始,取M条记录的select语句写法
- JAVA学习总结二十三
- 在php中定义常量时,const与define的区别
- XMPP 学习笔记三 SmackAPI
- 文章标题
- mysql 合集
- 练习5-12 对程序entab和detab的功能做一些扩充,以接受下列缩写的命令:entab -m +n表示制表符从第m列开始,每隔n列停止
- hdu1087 Super Jumping! Jumping! Jumping!
- Maven打包可执行Jar的几种方法
- Android初级教程初谈自定义view自定义属性
- 前景检测算法(十一)--基于LBP纹理
- YCSB工具学习使用汇总
- 生成jar包
- 存储过程实现分页
- spark 第一个java程序