Онлайн компилятор C

#include <stdio.h> int main() { char c; _Bool insideword = 0; do { scanf("%c", &c); int counter = 0; if (c != ' ' && c != '.') { insideword = 1; } if (c == ' ') { insideword = 0; } if (insideword && c != ' ') { printf("%c", c); } else { if (insideword == 0 && c == ' ') { counter++; while (counter >= 1) { printf(" "); } } } } while (c != '.'); return 0; }
这段代码试图从输入中读取字符直到遇到句点,并输出单词(由空格分隔),但输出逻辑有误。它试图在单词结束后输出一个空格,但实现方式不正确。

- 变量 `counter` 在每次循环开始时被重置为0,因此它无法累积计数。你需要在循环外部初始化并维护一个计数器,或者用其他方式控制空格的输出次数。
- 当 `insideword` 变为0且遇到空格时,你试图输出一个空格,但 `while (counter >= 1)` 循环没有改变 `counter` 的值,会导致无限循环。你需要思考如何只输出一个空格,而不是用循环。