Ваш код неверный.Вы пытались создать машину, которая в принципе является правильным подходом, но вы потерпели неудачу, потому что в этих строках есть две проблемы:
while(c=' ')
state=0;
Сначала вы наверняка хотели написать while(c == ' ')
, и ваш компилятор, вероятно,предупреждал вас об этом.
Но даже это неправильно:
while(c == ' ')
state=0;
Этот цикл никогда не завершится, если условие c == ' '
выполнено.
Что вам нужноэто:
#include <stdio.h>
int main(void) {
int c;
int spaceread = 1;
while ((c = getchar()) != EOF) {
if (c != ' ')
spaceread = 0; // something else than space => process normally
else
{
// space char has been read
if (spaceread) // if a space has been read previously => do nothing,
continue; // just continue to read the next character.
spaceread = 1; // remember we've read a space
}
putchar(c); // print character
}
}