2009-08-11 14 views

Répondre

9

Très probablement, stdout est un tampon de ligne. Votre programme n'appelle pas fflush ou envoie une nouvelle ligne pour que le tampon ne soit pas écrit.

#include <stdio.h> 

int main(void) { 
    printf("hai\n"); 
    for(;;) 
    ; 
    return 0; 
} 

Voir aussi question 12.4 et What's the correct declaration of main()? dans le C FAQ.

+0

Pourquoi la downvote? Échec d'inclure 'return 0' d'une fonction qui ne retourne jamais? –

+0

vous n'avez même pas réparé son typo include ... –

+0

Je downvoted parce que ce que vous avez ne compile pas. –

3

La sortie standard a tendance à être mise en mémoire tampon par défaut, donc la raison pour laquelle vous ne voyez rien est parce que vous n'avez pas vidé la ligne.

Cela fonctionne:

#include <stdio.h> 
int main (int argC, char *argV[]) 
{ 
    printf("hai\n"); 
    for(;;) 
     ; 
    return 0; 
} 

Sinon, vous pourriez fflush sortie standard ou tout simplement se débarrasser de la boucle infinie de sorte que le programme sort:

#include <stdio.h> 
int main (int argC, char *argV[]) 
{ 
    printf("hai"); 
    return 0; 
} 

mais vous voulez probablement la nouvelle ligne de toute façon .

4

Ceci est dû à la mise en mémoire tampon qui a lieu dans stdio (c'est-à-dire qu'elle n'est pas sortie immédiatement à moins que vous ne le disiez en incluant un \ n ou fflush). Veuillez vous référer au Write to stdout and printf output not interleaved qui explique ceci.

(P.S. ou le compilateur est pas content de la coquille dans #include)

2

Votre for (;;) boucle arrête le courant d'être vidé. Comme d'autres l'ont suggéré, ajouter une nouvelle ligne à la chaîne de sortie étant ou purger le flux explicitement:

fflush(stdout); 

après votre printf. Et corrige l'orthographe de #include.

Questions connexes