首页 > 代码库 > 避免老年痴呆,每日一个小程序(二)
避免老年痴呆,每日一个小程序(二)
接上篇,今天的小程序:编写程序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;}
避免老年痴呆,每日一个小程序(二)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。