Question

En Perl, je peux taper:

$|++;

et tout ce qui sera imprimé sur STDOUT sera automatiquement modifié ().

Existe-t-il un équivalent en C? En d’autres termes, y at-il un moyen de dire à stdio d’effacer automatiquement stdout après chaque printf (), de la même manière qu’il efface stderr?

Était-ce utile?

La solution

Essayez setvbuf(stdout, NULL, _IONBF, 0). Il change stdout en mode sans tampon (_IONBF).

Autres conseils

Je n'ai pas fait cela, mais _IOLBF serait la bonne réponse.

$ man setvbuf
...
NOM
setvbuf - Assigne la mise en mémoire tampon à un flux

SYNOPSIS
#include < stdio.h >

   int setvbuf(FILE *restrict stream, char *restrict buf, int type,
          size_t size);

DESCRIPTION
La fonction setvbuf () peut être utilisée après que le flux pointé par stream est associé à un fichier ouvert, mais avant toute autre opération (autre qu'un appel infructueux à setvbuf ()), effectuée sur le fichier.        courant. Le type d'argument détermine comment le flux doit être mis en mémoire tampon, comme suit:

    * {_IOFBF} shall cause input/output to be fully buffered.

    * {_IOLBF} shall cause input/output to be line buffered.

    * {_IONBF} shall cause input/output to be unbuffered.

Jetez un coup d'œil à setbuf () et setvbuf ().

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top