练习 1-20 编写程序 detab,将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止位的地方。假设制表符终止位的位置是固定的,比如每隔 n 列就会出现一个制表符终止位。n 应该作为变量还是符号常量呢?
练习 1-21 编写程序 entab,将空格串替换为最少数量的制表符和空格,但要保持单词之间的间隔不变。假设制表符终止位的位置与练习 1-20 的 detab 程序的情况相同。当使用一个制表符或者一个空格都可以到下一个制表符终止位时,选用哪一种替换字符比较好?
#include <stdio.h>
#define MAX_LEN 1000
#define TAB_LEN 8
#define SPACE ' '
void detab(char from[], char to[]);
void entab(char from[], char to[]);
int main() {
int c, len = 0;
char str_tmp[MAX_LEN];
char str_detab[MAX_LEN];
char str_entab[MAX_LEN];
while ((c = getchar()) != EOF) {
str_tmp[len++] = c;
}
str_tmp[len] = '\0';
detab(str_tmp, str_detab);
printf("%s", str_detab);
entab(str_detab, str_entab);
printf("%s", str_entab);
return 0;
}
void detab(char from[], char to[]) {
int c;
int len1 = 0;
int len2 = 0;
int line_len = 0;
while ((c = from[len1++]) != EOF) {
if (c == '\t') {
int i, len;
for (i = 0, len = TAB_LEN - line_len % TAB_LEN; i < len; ++i, ++line_len) {
to[len2++] = ' ';
}
} else {
to[len2++] = c;
c == '\n' ? line_len = 0 : ++line_len;
}
}
}
void entab(char from[], char to[]) {
int c;
int len1 = 0;
int len2 = 0;
int line_len = 0;
while ((c = from[len1]) != EOF) {
to[len2] = c;
if (line_len % TAB_LEN == TAB_LEN -1 && c == ' ') {
int i, numOfSpace = 0;
for (i = 1; i < TAB_LEN; i++) {
if (to[len2 - i] == ' ') {
++numOfSpace;
} else {
break;
}
}
len2 -= numOfSpace;
to[len2] = '\t';
}
len1++;
len2++;
c == '\n' ? line_len = 0 : ++line_len;
}
}
分享到:
相关推荐
《C程序设计语言<第2版新版>习题解答(原书第2版)》是对Brian W.Kernighan和Dennis M.Ritchie所著的《C程序设计语言<第2版新版>习题解答(原书第2版)》所有练习题的解答,是极佳的编程实战辅导书。K&R的著作是C语言...
C程序设计语言(第2版·新版),C程序设计语言(第2版·新版)习题解答4份电子档,其中C程序设计语言(第2版·新版)习题解答是对Brian W.Kernighan和Dennis M.Ritchie所著的《c程序设计语言第二版》所有课后练习题...
C程序设计语言 第二版 习题解答 官方题解
C语言最经典的教材 徐宝文译 非扫描版 带详细书签 清晰版
python语⾔程序设计基础第⼆版第⼆章答案-python语⾔程序 设计基础(嵩天)第⼆章课。。。 **第⼆学期第⼀周学习总结 ⼀. 本周学习内容总结 ⼀维数组,了解了⼀维数组的定义(定义⼀个数组,需要明确数组变量名,数组...
C程序设计语言经典教材的习题解答 练习题
C程序设计语言(第2版·新版) 中文PDF,完整书签,去水印,内容可复制; C程序设计语言(第2版·新版)习题解答 复印版,不可复制; The C Programming Language 英文PDF可复制,完整书签; The C Programming ...
C语言程序设计练习题第2部分答案.pdf
《C程序设计语言(第二版)》绝对是一部经典,后面的习题也值得练习实践,这是习题解答,可以作为参考
C语言程序设计教程、实验与练习(课件)
颜晖、张泳,《C语言程序设计实验与习题指导(第3版)》,高等教育出版社,2015年,ISBN 978-7-04-043563-4 常见问题 Q:我需要特殊版本的计算机吗? A:任何计算机都可以用于C语言编程,包括但不限于各个版本的...
计算机程序设计(Java)-教案--单元二--Java语言开发基础全文共8页,当前为第1页。计算机程序设计(Java)-教案--单元二--Java语言开发基础全文共8页,当前为第1页。课堂教学计划表 计算机程序设计(Java)-教案--...
第二版中文版答案 pdg格式,清晰 附赠pdg阅读器UnicornViewer
书中除了讲解C程序设计语言,还广泛介绍了作为一名C程序设计人员应该掌握的必要知识,并提供了大量的实用性很强的编程实例。本书的目标是使你在C语言程序设计方面由一位初学者成为一位称职的程序员。读者基本不需要...
本书沿袭前一版的编写原则和风格,在读者学习了C/C++的基础上,从Windows SDK程序设计出发,用C++类对Windows应用程序进行了模拟封装,重点介绍MFC的应用程序框架。随后以精练的语言介绍Windows的图形图像处理、应用...
The_C_Programming_Language第二版中文版带答案.rar 包含两个文件 C程序设计语言(第2版_新版)习题解答.pdf The_C_Programming_Language第二版中文版.pdf
<br>实验四 综合(课程设计) 内容及步骤: 1、假定一维数组a[n]中的每个元素值均在[0,200]区间内,用C++编写一个算法,分别统计出落在[0,20],[21,50],[51,80],[81,130],[131,200]等各区间内的元素...
《C语言程序设计》知识点总结以及复习资料(大一期末考试必备) 使用人群:大一正在备考期末考试的孩子们 内容包括: c语言(c++)期末复习资料. c语言程序设计试题. c语言程序设计试题及答案. c语言程序设计习题(含...