usleep() la fonction ne permet pas une boucle à continuer
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(void)
{
int i=0;
while(i<10)
{
printf("%d", i);
usleep(10000); //or sleep(1)
i++;
}
return 0;
}
Je veux le programme au cours des 10 dernières secondes, c'est à dire d'impression 1 - attendre 1 sec - impression 2 - attendre 1 sec et ainsi de suite jusqu'à la fin. Mais il ne le fait pas, il a juste attend tous les temps (10 secondes), puis imprime la totalité du tableau de chiffres sans aucun temps de retard entre eux, c'est juste des impressions 0123456789 à la fois.
EDIT: j'ai essayé avec la fonction sleep() au lieu de usleep mais c'est la même
Comment résoudre ce problème ? Et pourquoi c'est comme ça ?
- aussi, si vous souhaitez que le programme au cours des 10 dernières secondes, alors vous ne devriez pas simplement ajouter plusieurs dort et les ajouter car wach boucle nécessite plus de temps pour exécuter le printf et les frais généraux.
Vous devez vous connecter pour publier un commentaire.
Votre tampon de sortie n'est pas en train d'être vidée. Par défaut, la sortie est écrite lorsqu'une nouvelle ligne apparaît dans le flux. Changer votre
printf
à ceci:ou essayez ceci:
Aussi, si vous souhaitez supprimer la ligne de mise en mémoire tampon de comportement, vous pouvez utiliser
setvbuf()
et la_IONBUF
mode.De côté - Pour passer de 1 seconde à
usleep
, appelusleep(1000000)
appel
fflush(stdout)
après chaque printf pour vider la mémoire tampon de sortie