Faire les évènements pendant une boucle

Salut!

Dans mon programme C je réalise une boucle qui dure en gros un petit moment et qui répète une action.
Juste avant cette boucle j’affiche un truc à l’écran avec printf.
En gros c’est ça:

[code]printf(“Ce qui a lieu d’être affiché à ce moment là”);

for(i=0; i<max; i++)
{
// actions dans ma boucle
}[/code]

Seulement, le texte que je veux afficher à l’écran avec printf ne s’affiche qu’une fois la boucle terminée, comme si j’avais mis le printf après la boucle.
La raison en est (en gros d’après ce que j’ai compris) que la boucle utilise tout le calcul processeur alloué à mon programme, ce qui fait que les autres évenements en cours de mon programme ne sont pas exécutés.

Je me souviens quand je programmais en BASIC, j’avais le même problème parfois. Pour le résoudre il fallait ajouter l’instruction DoEvents dans la boucle.

Existe t-il un moyen de résoudre ce petit probème? Une instruction alternative à C au DoEvent du Basic peut être?

Merci de votre aide, bye!

Bah essaie un flush : “fflush(stdout);” ou rajoute un ‘\n’ à la fin de ton printf, ça déclenche généralement un flush aussi.

OK ça fonctionne! Merci!

Faux. Meme si drealmer a donne la reponse, je m’en vais expliquer tout ca de maniere propre.

printf et tout la serie des f* (fopen, fread et tout ca) sont bufferises, c’est a dire que l’ecriture ou la lecture effective se fait une fois le tampon plein OU quand on fait fflush.
C’est pour cette raison que c’est pas (trop) grave de faire un printf ou un fwrite caractere par caractere puisque l’ecriture ne se fait qu’une fois le tampon plein.

(evidement, c’est pas le cas (a priori) avec les fonctions bas niveau comme open, read et write, donc mefiance, utilisez les fonctions de stdio :P)

Par contre, le coup du fflush automatique quand on fait un \n, je suis moins sur.

LoneWolf
Bufferisons les I/O

Merci LoneWolf :stuck_out_tongue: J’avais la flemme d’entrer dans les détails…

Sinon pour le ‹ \n › qui flush, c’est pas standard mais généralement ça le fait.

[quote name=‹ Drealmer › date=’ 16 Jun 2005, 11:52’]Merci LoneWolf :stuck_out_tongue: J’avais la flemme d’entrer dans les détails…

Sinon pour le ‹ \n › qui flush, c’est pas standard mais généralement ça le fait.
[right][post=« 368846 »]<{POST_SNAPBACK}>[/post][/right][/quote]

Ca le fait pas sur les linux de mon ecole, d’ailleurs c’est bien chiant quand t’as la flemme et que tu debug avec des printf() puisque les segmentation fault ne font pas de fflush avant d’arreter l’execution du programme.

[quote name=‹ majinboo › date=’ 16 Jun 2005, 13:04’]Ca le fait pas sur les linux de mon ecole, d’ailleurs c’est bien chiant quand t’as la flemme et que tu debug avec des printf() puisque les segmentation fault ne font pas de fflush avant d’arreter l’execution du programme.
[right][post=« 368904 »]<{POST_SNAPBACK}>[/post][/right][/quote]
Oui bon ok, « généralement ça le fait sous dos/win » :stuck_out_tongue: