您的位置:首页 > 编程语言 > C语言/C++

第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;
}
运行结果:

无法输出正确结果!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: