《C程序设计语言》里的一道习题,按照习题解答写的代码输出不了

图片说明题目是“编写一个程序,以每行一个单词的形式打印其输入”。代码看着应该没问题啊。

#include <stdio.h>
#define IN 1
#define OUT 0

int main()
 {
    int c, state;

    state = OUT;
    while ((c = getchar()) != EOF);
    {   if (c == ' ' || c == '\t' || c == '\n')
        {
            if (state = IN)
            {
                putchar('\n');
                state = OUT;
            }
        }
        else if (state = OUT)
        {
            state = IN;
            putchar(c);
        }
        else
            putchar(c);
    }
    return 0;
}

人家里面可是== 双等号 你是=。。。。能一样么

if和elseif判断括号里的

if (state = IN) 会永远为真的!! 就一直输出 换行 , 用 ==

else if (state = OUT)
if (state = IN)
都要是==

=与==写错了,这种错误很容易犯错,而且你还很难找出来,所以一定要细心。