第7周 C语言程序设计(新2版) 练习1-18 删除空格制表符 (程序不能正确运行)
2016-05-12 22:27
381 查看
问题及代码:
无法输出正确结果!!!
/*删除每个输入行末尾的空格及制表符, 并删除完全是空格的行*/ #include <stdio.h> #define MAXLINE 1000 int getline(char line[],int maxline); int move(char s[]); main() { char line[MAXLINE]; //当前输入行 while(getline(line,MAXLINE)>0) { if(remove(line)>0) printf("%s",line); // } return 0; } /*删除空格及制表符,返回新长度*/ int move(char s[]) { int i; i=0; while(s[i]!='\n') i++; //记录输入字符的数目,直到遇到换行符为止 i--; //去掉的数目即换行符的 while(i>=0&&s[i]=='\t'||s[i]==' ') i--; //去掉字符串中所有空格、换行符 if(i>=0) //剩下的字符如果还大于等于0,就表明输入行还有字符 { i++; s[i]='\n'; i++; s[i]='\0'; } return i; } /*输入一行,并返回其长度*/ int getline(char s[],int lim) { int c,i,j; j=0; //j记录复制到字符串s中字符的个数 for(i=0;(c=getchar())!=EOF&&c!='\n';i++) //不再检查字符数是否超出数组s的限制 if(i<lim-2) //数组s的最后一个下标是lim-1; { s[j]=c; j++; } if(c=='\n') { s[j]=c; j++; i++; } s[j]='\0'; //字符串末尾以'\0'为结尾不能漏了 return i; }运行结果:
无法输出正确结果!!!
相关文章推荐
- C++空类的作用一
- 联发科Linkit 7688 (一) 上手及在Mac下搭建OpenWrt交叉编译环境,C语言编译Hello,World
- C++:[STL]浅谈Allocator以及详解STL之sequence container的操作及使用(vector)
- C语言学习新手常见问题
- Arithmetic Progressions
- C++笔记之关键字explicit
- C++笔记之关键字explicit
- 【C/C++】:如何获得一个float数的小数位数?
- C++中类和结构体的介绍
- 第7周 C语言程序设计(新2版) 练习1-17 打印长度大于80个字符的所有输入行
- C语言学习021:管道
- C++学习笔记(1) —— 有关在函数参数表后的const
- C++11新特性学习笔记(二)
- 【C++】:C++ STL中的map 详解
- 【C++】:C++中map的使用
- c++ 左值与右值
- 二分K均值c++实现
- 335. Self Crossing(C++实现)
- knn算法C++实现
- C语言之sprintf()字符串的构造