高手请进:C语言中的输入复制到输出的程序

来源:百度知道 编辑:UC知道 时间:2024/05/26 08:29:55
#include<stdio.h>
main()
{
int c;
while((c=getchar())!=EOF)
{while((c=getchar())!=' '||(c=getchar())!=EOF)
putchar(c);
if((c=getchar())==' '||(c=getchar())!=EOF)
putchar(c);
while((c=getchar())==' '||(c=getchar())!=EOF);
}
printf("over");
}程序的目的是:将其中连续的多个空格用一个空格代替输出。以上是我编的,但达不到目的。高人能帮我解决一下吗?
你的程序没错,但你的执行结果是:‘空格’全没输出,而我的要求是:将其中输入连续的‘多个’空格用‘一个’空格代替输出啊!

#include<stdio.h>
main()
{
int c;
while((c=getchar())!=EOF)//读取一个字符
{while((c=getchar())!=' '||(c=getchar())!=EOF)//读取2个字符
putchar(c);
if((c=getchar())==' '||(c=getchar())!=EOF)//读取2个字符
putchar(c);
while((c=getchar())==' '||(c=getchar())!=EOF);//读取2个字符
}
printf("over");
}
-------------------------------------------------
错误分析:c=getchar()在判断的时候读取太多字符 并且判断关系不正确

改正如下:
-------------------------------------------------

#include<stdio.h>
main()
{
int c;
c=getchar();
while(c!=EOF)
{
while(c!=' '&&c!=EOF) //读取不是空格和结束的时候
{
putchar(c); //输出
c=getchar(); //读取下一个字符
}
if(c==' '&&(c!=EOF)) //如果是空格则输出空格
putchar(c);
while((c=getchar())==' ');//去掉多余的空格
}
printf("o