将其中连续的多个空格用一个空格代替 ,用while遍历空格,最后只输出一个空格,如下代码为何不可?

//需求1-9:编写一个将输入复制到输出的程序,并将其中连续的多个空格用一个空格代替

int c;
    while((c = getchar()) != EOF){
    
        while(c == ' '){
            c = getchar();    
        }
        putchar(c);
    } 

遍历数组,找到空格设置一个标志,后续如果有空格,如果标志为已设置,则丢弃
你写c == getchar(); 干啥,这是判断,应该是 c=getchar()。但getchar并不能实现你的功能,得用getch(),修改如下:

#include <conio.h>
void main()
{
    char c;
    int flag = 0;
    while ((c = getch()) != EOF){
         if (c != ' ')
        {
            putchar(c);
            flag = 0;
        }
        else if (!flag)
        {
            flag = 1;
            putchar(c);
        }
    }
}

参考如下:

char c;
char buf[100]={0};//保存输入的字符串(去掉连续空格)
int j=0;
while( (c = getchar()) != '\n')
{
    if(c!= ' ')
        buf[j++] = c;
    else
    {
        if(j==0)
            buf[j++] = c;
        else
        {
            if(buf[j-1] == ' ')
                continue;
            else
                buf[j++] = c;
        }
    }
}

buf[j] = '\0';
#include <stdio.h>
#define NONBLANK 'a'
void main(){
    int c,lastc; 
    lastc = NONBLANK;
    while((c =  getchar()) != EOF){
        if(c != ' ' || lastc != ' ')
            putchar(c);
        lastc = c;
    }
}