0
votes

Comment faire compte de la minuterie d'impression de la minuterie sur une ligne unique en C?

J'ai le code ici qui fonctionne comme un compte à rebours, mais il imprime les résultats sur une nouvelle ligne comme ceci: xxx

voici mon code: xxx

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


10 commentaires

Essayez de rincer le tampon après chaque impression printf ("TIME: \ T% D", compte); fflush (stdout); . 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 ). 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 (Time: 9) Clear (heure: 8) ... Juste pour clarification, utilisez-vous des systèmes ou des fenêtres Linux?


Essayez avec printf ("\ rtime: \ t% d", compte); suivi de fflush (stdout);


3 Réponses :


1
votes

Essayez de changer printf ("Time: \ t% d \ n", compte); à printf ("TIME: \ T% D \ T", compte);


0 commentaires

0
votes

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");


0 commentaires

0
votes

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;
}


0 commentaires