bah, j'ai un prog avec des foncitons assez énormes, qui prennent *bien* du temps, et quand je leur dis d'afficher un truc, ils n'affichent que ...
à la fin !
par exemple
while ( ! compare_tableaux( actual_num_rows ) ) {
compteur++;
sauvegarde_tableaux ( actual_num_rows );
cycle_de_vie();
if (compteur % 100 == 0 )
printf ("\rcompteur : %d", compteur);
}
printf ("\rtaille : %d ", actual_num_rows);
printf ("compteur : %d -|- rang : %d\n ", compteur, compare_tableaux( actual_num_rows ));
et bien l'affichage ressemble à
etape 1:
(rien)
étape deux :
compteur : 5217
étape 3 :
taille : (...) ........................
et il a pas affiché d'intermédiaire !
Cher journal, comment on peut dire : "mets l' écran à jour" en C ( un redraw(); ou truc comme ça ? )
question subsidiaire ?
ou puis trouver ce genre d'infos (pas dans mon bouquin ; pas vu sur google)
# Re: C - raffraichir l'écran ?
Posté par gawal . Évalué à 5.
# Re: C - raffraichir l'écran ?
Posté par Dimitri Robert (site web personnel, Mastodon) . Évalué à 6.
Ça permet de vider un flux.
Un petit lien vers une page de man en ligne : http://man.he.net/man3/fflush(...)
# Re: C - raffraichir l'écran ?
Posté par Ph Husson (site web personnel) . Évalué à 0.
fflush(1);
pour stdout ou fflush(2) si c'est stderr etc
[^] # Re: C - raffraichir l'écran ?
Posté par Jonathan ILIAS-PILLET (site web personnel) . Évalué à 2.
#include <stdio.h>
int main (void)
{
if (stdout == 1)
printf ("Changer de compilateur pour un compatible C ANSI\n");
return 0;
}
# gcc -o truc -Wall -pendatic -ansi truc.c && ./truc
;p
[^] # Re: C - raffraichir l'écran ?
Posté par Cédric Chevalier (site web personnel) . Évalué à 1.
[^] # Re: C - raffraichir l'écran ?
Posté par fred point . Évalué à 1.
[^] # Re: C - raffraichir l'écran ?
Posté par Ph Husson (site web personnel) . Évalué à 1.
[^] # Re: C - raffraichir l'écran ?
Posté par fred point . Évalué à 1.
[^] # Re: C - raffraichir l'écran ?
Posté par mansuetus (site web personnel) . Évalué à 1.
attention : passage de l'argument n°1 de « fflush » transforme un entier en pointeur sans transtypage.
(...)
segfault ( au premier appel de la fonction)
par contre, ça marche avec fflush(stdout);
merci !!!!
# Re: C - raffraichir l'écran ?
Posté par Ph Husson (site web personnel) . Évalué à -1.
c'est pas beau?
# Re: C - raffraichir l'écran ?
Posté par zelyph . Évalué à 1.
char *pat = "\rmon resultat: %d";
char *buf = (char *)malloc(strlen(pat)+30);
sprintf(buf,pat,value);
write(1,buf,strlen(buf));
free(buf);
/* non testé :p */
# Re: C - raffraichir l'écran ?
Posté par Alexis B. . Évalué à 2.
que la ligne n'est affichée qu'après un '\n').
#include <stdio.h>
/* ... */
setbuf(stdout, NULL);
^
|--- au début du programme.
-- Alexis ;->
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.