删除每个输入行末尾的空格,制表符,并删除全空格行
2011-04-21 04:35
906 查看
源自《The C Programming Language》P22 pr1-18:
编写一个程序,删除每个输入行末尾的空格,制表符,并删除完全是空格的行
代码:
main.c
分析:
1, 对比于自己实现的代码,发现这段代码简洁多了,思路也很清晰和易懂。
2, 有点缺憾之处:(a),每次输入一行字符,处理结果会紧接着下一行输出,不太容易观看,
而上面那段代码就不存在这个问题。
(b),参考代码没有考虑一行字符串没有'/n'的情况,这和它将MAXLINE设成1000有关,
极端的情况是一个字符串就是1000个字符,并且倒数第二字符不是'/n',如果MAXLINE
的值比较小的话,这个问题就凸现出来了,相比于此,上段代码考虑了这种情况。
修改remove函数:
while(s[i] != '/n' && i < MAXLINE - 2)
++i;
if(i != MAXLINE - 2)
--i;
while(i >= 0 && (s[i] == ' ' || s[i] == '/t'))
--i;
if( i >= 0 && i < MAXLINE - 2)
{
++i;
s[i] = '/n';
++i;
s[i] = '/0';
}
编写一个程序,删除每个输入行末尾的空格,制表符,并删除完全是空格的行
代码:
main.c
#include <stdio.h> #define MAXLINE 1000 int getLine(char line[], int maxline); int remove(char s[]); int main() { char line[MAXLINE]; while(getLine(line, MAXLINE) > 0) if(remove(line) > 0) printf("%s", line); return 0; } int remove(char s[]) //删除字符串s末尾的空格和制表符并返回它的新长度 { int i; i = 0; while(s[i] != '\n') //查找'\n'在s数组中对应的下标 ++i; --i; while(i >= 0 && (s[i] == '' || s[i] == '\t')) //从字符串末尾起向前查找字符值不是' '和'\t'的字符 //所对应的下标 --i; if(i >= 0) { ++i; s[i] = '\n'; ++i; s[i] = '\0'; } return i; }
分析:
1, 对比于自己实现的代码,发现这段代码简洁多了,思路也很清晰和易懂。
2, 有点缺憾之处:(a),每次输入一行字符,处理结果会紧接着下一行输出,不太容易观看,
而上面那段代码就不存在这个问题。
(b),参考代码没有考虑一行字符串没有'/n'的情况,这和它将MAXLINE设成1000有关,
极端的情况是一个字符串就是1000个字符,并且倒数第二字符不是'/n',如果MAXLINE
的值比较小的话,这个问题就凸现出来了,相比于此,上段代码考虑了这种情况。
修改remove函数:
while(s[i] != '/n' && i < MAXLINE - 2)
++i;
if(i != MAXLINE - 2)
--i;
while(i >= 0 && (s[i] == ' ' || s[i] == '/t'))
--i;
if( i >= 0 && i < MAXLINE - 2)
{
++i;
s[i] = '/n';
++i;
s[i] = '/0';
}
相关文章推荐
- 练习1-18 编写一个程序,删除每个输入行末尾的空格以及制表符,并删除完全是空格的行
- 编写一个程序,删除每个输入行末尾的换行符和制表符,并删除完全是空格或制表符的行<The C Programming Language>课后习题
- 删除每个输入行末尾的空格,制表符,并删除全空格行
- 练习 1- 18 删除每个输入行末尾的空格及制表符,并删除完全是空格的行
- C语言程序设计习题1-18 删除每个输入行末尾的空格或制表符,并删除完全是空格的行
- C圣经---删除输入行末尾的空格以及制表符,并删除完全是空格的行
- 要求编写程序,读入5个字符串,按由小到大的顺序输出。 (2)功能要求 ①输入格式:输入为由空格分隔的5个非空字符串,每个字符串不包括空格、制表符、换行符等空白字符,长度小于80。
- 输入文本框中输入手机号自动添加空格以及在手机号中间的空格处删除时自动删除末尾号码其他位置则删除直接删除实现
- c程序设计语言_习题1-18_删除输入流中每一行末尾的空格和制表符,并删除完全是空格的行
- 把字符串中的每个空格替换程“%20”,例如输入“I love my hometown”,输出为”I%20love%20my%20hometown”
- 删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化为1个
- 2345_Gold Coins(输入分多个块,每个块中有多行,每个输入块之间有空格,但最后没有空格)
- 删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化为1个。
- 请实现一个函数,把字符串中的每个空格替换成“%20”,例如输入 “We are Happly。” 则输出“we%20are%20happy。”
- 判断输入字符串是否由空格、制表符、回车符、换行符组成的字符串
- 第7周 C语言程序设计(新2版) 练习1-18 删除空格制表符 (程序不能正确运行)
- 把字符串中的每个空格替换程“%20”,例如输入“I love my hometown”,输出为”I%20love%20my%20hometown”
- 字符串 删除字符串开始以及末尾的空白符,并把数组中间的多个空格(如果有)符转换为1个
- 删除字符串头部和末尾的空格
- 从键盘输入一串英文字母(不含空格与其它字符),统计每个字母的个数,并输出字母个数及相应的个数