C语言K&R,编写程序删除每输入行末尾的空格及制表符,并删除完全空格行?
#include<stdio.h>#defineMAXLINE1000intmain(void){inti;intc;charto[MAXLINE];charfrom[M...
#include<stdio.h>
#define MAXLINE 1000
int main(void)
{
int i;
int c;
char to[MAXLINE];
char from[MAXLINE];
i = 0;
while(c = getchar() != EOF )
{
from[i] = c;
if(from[i] != '\0')
{
if(from[i] == '\n')
{
if(from[i - 1] == '\t' || from[i - 1] == ' ')
{
from[i - 1] = '\n';
from[i] = '\0';
{
to[i - 1] = from[i - 1];
putchar(to[i - 1]);
}
}
else
{
to[i] = from[i];
putchar(to[i]);
}
}
else
{
to[i + 1] = from[i + 1];
}
}
i++;
}
}
不问应该怎么写,我就问我这个怎么没法输出啊?思路有问题么?有什么地方是不妥的?有什么思路是错的?应该如何改正?还没学到指针,别和我说用指针。 展开
#define MAXLINE 1000
int main(void)
{
int i;
int c;
char to[MAXLINE];
char from[MAXLINE];
i = 0;
while(c = getchar() != EOF )
{
from[i] = c;
if(from[i] != '\0')
{
if(from[i] == '\n')
{
if(from[i - 1] == '\t' || from[i - 1] == ' ')
{
from[i - 1] = '\n';
from[i] = '\0';
{
to[i - 1] = from[i - 1];
putchar(to[i - 1]);
}
}
else
{
to[i] = from[i];
putchar(to[i]);
}
}
else
{
to[i + 1] = from[i + 1];
}
}
i++;
}
}
不问应该怎么写,我就问我这个怎么没法输出啊?思路有问题么?有什么地方是不妥的?有什么思路是错的?应该如何改正?还没学到指针,别和我说用指针。 展开
2个回答
展开全部
追问
不是,是KRC的习题。唉,我就不知道为毛我错了?
思路大概就是一个数组复制另外一个数组,如果碰到\n,则前面临近的\t或者空格用\n替代,本来的n就换成空字符。然后新的复制到最后就变成换行符前的制表符和空格符全部被替换成换行符,本来的换行符变成空。然后。。。达到删除末尾的制表符空格符的目的。。。哪错了?
展开全部
首先你要判断i-1>=0,如果from[0]='\n',那么from[i-1]就没有意义。还有最后的两个else看不懂,不知道楼主的else是相对应哪个if语句。我觉得楼主应该先将输入的信息全部读入字符串from里,再检测from里的‘\n’,‘\t’,' '。这样看起来比较顺眼,程序最好加上注释,这样别人才能更容易看懂,这是身为程序员的良好习惯,顺带一提,我也是菜鸟,刚学到指针
追问
思路大概就是一个数组复制另外一个数组,如果碰到\n,则前面临近的\t或者空格用\n替代,本来的n就换成空字符。然后新的复制到最后就变成换行符前的制表符和空格符全部被替换成换行符,本来的换行符变成空。然后。。。达到删除末尾的制表符空格符的目的。。。哪错了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询