J'ai le code ici qui fonctionne comme un compte à rebours, mais il imprime les résultats sur une nouvelle ligne
comme ceci: voici mon code: p> Qu'est-ce que j'ai essayé jusqu'à présent est de changer \ n à \ r Imprimez sur une seule ligne mais cela n'a pas fonctionné. J'essaie de préciser la ligne et d'imprimer le numéro suivant dans la ligne, puis effacez-le et imprimez le suivant si cela a du sens p> p>
3 Réponses :
Essayez de changer printf ("Time: \ t% d \ n", compte); code> à
printf ("TIME: \ T% D \ T", compte); Code> p>
Utilisez "\ b \ b" code> pour effacer un caractère. Imaginez que vous venez d'imprimer "42": le 1er
'\ b' code> déplace le curseur sur sur les 2, puis l'espace "efface" que 2, et revenez enfin un espace supplémentaire.
printf("Time: \t");
while(count != 0)
{
printf("%d", count);
fflush(stdout);
sleep(1);
if (count >= 100) printf("\b \b");
if (count >= 10) printf("\b \b");
if (count >= 1) printf("\b \b");
count--;
}
printf(" \n");
Essayez d'ajouter fflush (stdout) code> après avoir utilisé
\ r code> dans votre
printf code> comme mentionné par PMG:
int timer()
{
int count;
count = 10;
while(count != 0)
{
printf("Time: \t%d \r", count);
fflush(stdout);
count--;
sleep(1);
}
printf("\nCount down timer has expired\n");
return 0;
}
Essayez de rincer le tampon après chaque impression
printf ("TIME: \ T% D", compte); fflush (stdout); code>. Est-ce que ça marche pour toi?
sorte de. Il imprimé comme ceci: Heure: 5 Time: 4 Time: 3 Temps: 2 heures: 1
Si cela imprime comme ça, vous avez manqué l'espace. Et si vous vous attendez à imprimer juste le numéro, ignorez la chaîne de temps
@Martheen quel espace?
@mikejosnton Le seul autre espace de cette chaîne (suivant
% d code>). Quel que soit le positionnement de la console-curseur de la console, de la terre de la boîte à outils, généralement quelque chose comme des ncurses.
Maintenant, son impression comme celle-ci: 5 4 3 2 1 Compter la minuterie a expiré
@Martheen Savez-vous comment je peux l'obtenir pour effacer la ligne et imprimer le numéro suivant dans la ligne, puis effacer cela et imprimer le suivant?
Est-ce que cela répond à votre question? Effacer la ligne de console imprimée actuelle
Déclaration de retour de chariot travaillée pour mon compilateur. Je reçois (Time: 10) Clear i> (Time: 9) Clear i> (heure: 8) ... Juste pour clarification, utilisez-vous des systèmes ou des fenêtres Linux?
Essayez avec
printf ("\ rtime: \ t% d", compte); code> suivi de
fflush (stdout); code>