2010-03-22 6 views
2

Lorsque j'exécute le code suivant, je n'ai pas de sortie mais je n'arrive pas à comprendre pourquoi.Comportement étrange avec fputs et une boucle

# include <stdio.h> 

int main() 
{ 
    fputs("hello", stdout); 

    while (1); 

    return 0; 
} 

Sans la boucle while cela fonctionne parfaitement mais dès que je l'ajoute, je n'ai pas de sortie. Sûrement il devrait sortir avant de commencer la boucle? Est-ce juste sur mon système? Dois-je vider une sorte de tampon ou quelque chose?

Merci d'avance.

Répondre

5

Vous devez vider stdout. Cela se produit automatiquement lorsque vous écrivez un caractère de nouvelle ligne. Changer le fputs à:

fputs("hello\n", stdout); 

Ou:

fputs("hello", stdout); 
fflush(stdout); 
0

Pourquoi faut-il? Les fonctions stdio ne savent pas ce qui se passe à l'extérieur et ne sauront sûrement pas qu'une boucle infinie arrive. Le tampon ne sera vidé que lorsqu'il est complet ou explicitement demandé.

0

fflush(stdout);