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