Le programme C suivant n'imprime rien à l'écran.Pourquoi le programme suivant ne génère aucune sortie visible?
Je compilé le programme avec gcc
:
#include<stdio.h>
main()
{
printf("hai");
for(;;);
}
Le programme C suivant n'imprime rien à l'écran.Pourquoi le programme suivant ne génère aucune sortie visible?
Je compilé le programme avec gcc
:
#include<stdio.h>
main()
{
printf("hai");
for(;;);
}
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.
Pourquoi la downvote? Échec d'inclure 'return 0' d'une fonction qui ne retourne jamais? –
vous n'avez même pas réparé son typo include ... –
Je downvoted parce que ce que vous avez ne compile pas. –
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 .
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)
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.
#include est mal orthographié ... – richsage
Cela ne compilera pas. –
Oui, non, et quelle est votre question? – qrdl