避免老年痴呆,每日一个小程序(二)
2014-12-06 12:39
99 查看
接上篇,今天的小程序:编写程序detab,将输入中的制表符替换成适当数目的空白符(使空白充满到下一制表符停止位)。假定制表符停止位的位置是固定的,比如在每个n列的位置上。n应为变量或符号参数吗?--为避免空格与tab显示难以区分,这里使用指定长度的‘*’号填充tab符号。
#include <stdio.h> /*将输入的制表符替换为适当数量的‘*’ */ #define N 4 //制表符的停止位 #define MAXLENGTH 1000 //输入行最大长度 int getLine(char s[],int lim); void convertTab(char s[]); main(){ char line[MAXLENGTH]; int len = 0; while((len = getLine(line,MAXLENGTH)) > 0){ convertTab(line); printf("%s",line); } return 0; } int getLine(char s[],int lim){ int c,i; for(i = 0; i < (lim -1) && (c = getchar()) != EOF && c != '\n'; ++i){ s[i] = c; } if(c == '\n'){ s[i] = c; ++i; } s[i] = '\0'; return i; } void convertTab(char s[]){ int i,j,k,c; int len; //替换tab后的当前字符串长度 char d[MAXLENGTH]; //用于存放替换后的字符串 for(i = 0,j = 0; (c = s[i]) != '\0';++i){ if(c == '\t'){ len = j; for(k = 0;k < (N - len % N);++k){ d[j] = '*'; ++j; } } else{ d[j] = c; ++j; } } d[j] = '\0'; for(i = 0; i <= j; ++i) s[i] = d[i]; return; }
相关文章推荐
- 避免老年痴呆,每日一个小程序(一)
- 避免多次运行同一个程序进程
- KingDZ 变菜鸟,每日一个C#小实例之---C#开机自动执行程序
- 每日一题第一题:编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出。
- 避免一个程序多个实例同时运行
- Python每日一个小程序
- 每日一个C++小程序(一)--Circle类 求面积
- 每日一个C++小程序(六)--基本菜单程序
- 每日一个C++小程序(五)--根据坐标求矩阵面积
- Python每日练习 10 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-)
- 每日一个C++小程序(十)--枚举类型赋值
- KingDZ 变菜鸟,每日一个C#小实例之---C#开机自动执行程序
- 每日一个C++小程序(四)--DOG类
- 每日一个C++小程序(八)--设计一个人事管理的人员类
- 每日一个C++小程序【趣味篇】--C++绘画小程序
- 每日一个C++小程序(十二)--具有静态数据、函数成员的Point类,多文件组织
- 每日一个C++小程序(三)--tree类
- 每日一个C++小程序(九)--取不同球的取法
- 避免asp.net程序session过期的一个另类方法
- 每日一个C++小程序(二)--Line,Point类 求线段