Alors je continue dans mon élan !

J'aimerais faire un programme qui affiche un mot par ligne. Mais attention s'il y a deux espaces, il ne faut pas qu'il y est une ligne vide entre ces deux mots.
Pour l'instant j'ai créée le pg suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
 
#define IN 1 /* en una palabra*/
#define OUT 0  /*fuera de una palabra*/
 
main()
{
    int state;
    int c;
 
    state = IN;
 
    while ((c = getchar()) != EOF)
    {
 
        if (c == ' '|| c == '\t')
 
            if (state == IN)
            {
                state = OUT;
                c = '\n';
            }
        else
        {
            state = IN;
        }
 
        putchar(c);
    }
}
Ca marche... mais une fois sur deux, et je ne comprends pas pq !
Je ne cherche pas à réussir spécialement cet exercice, mais juste à comprendre mon erreur. Quelqu'un a vu où elle était ?