C语言里用一个空格代替连续出现的多个空格,然后输出,求解!

#include

int main()
{
int c, i, j;
char str[1000];

i = 0;
while ((c = getchar()) != EOF) {
    str[i] = c;
    ++i;
}
str[i] = '\0';
i = j = 0;
while (str[i] != '\0') {
    putchar(str[i]);
    ++i;
    j = i;
    while (str[i] == ' ')
        ++i;
    if (i - j >= 1)
        putchar(str[j]);
}
return 0;

}

代码是不是直接copy过来的,头文件没了。用一个char变量记录前一个输入的是不是空格判断输出,加个判断就行了

参考 C语言合并连续空格

连续多个空格当做一个?只要判断非空格的前一个字符是否是空格就可以了,这样不会重复

不需要用if(i-j>=1)吧

#include
int main()
{
int c, i, j;
char str[1000];
i = 0;
while ((c = getchar()) != EOF) {
str[i] = c;
++i;
}
str[i] = '\0';
i = j = 0;
while (str[i] != '\0') {
putchar(str[i]);
while (str[++i] == ' ')
{
j = 1;
}
if (j)
{
putchar(' ');
j = 0;
}

}
return 0;
}

上次回答的合并连续空格的代码,解决你问题了吗?
上面的答案有帮助吗?如果还有问题,请提出来,如果对答案满意,请顶一下,并标记为采纳答案,谢谢!