Chachou_2032
Messages postés1Date d'inscriptiondimanche 27 septembre 2020StatutMembreDernière intervention27 septembre 2020
-
27 sept. 2020 à 15:47
ToutEnMasm
Messages postés591Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention13 décembre 2022
-
30 sept. 2020 à 18:23
Bonjour,
J'aurais aimé savoir comment on peut insérer un printf (ou peut être une autre fonction du coup) dans une boucle pour que seules les variables changent. Je ne veux pas que ce qu'il y a dans le printf se répète. Seulement que les nouvelles valeurs écrasent les anciennes.
Voici mon code (Etant entièrement débutante en C, je m'excuse s'il pique les yeux ! ) :
int h=0;
int m=0;
int s=0;
for (int i=0;i<86400;i++)
{
printf("Vous etes ici depuis %d:%d:%d.", h,m,s);
if (s<60)
{
sleep(1);
s=s+1;
}
else
{
s=0;
m=m+1;
}
if (m==60)
{
m=0;
h=h+1;
}
}
Whismeril
Messages postés18417Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 5 juin 2023624 Modifié le 27 sept. 2020 à 23:02
Bonsoir
peut-être en effaçant l'écran avant d'afficher ta nouvelle ligne?
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023124 28 sept. 2020 à 10:19
Bonjour !
Tu ne peux pas, tout simplement ! La console est un outil qui permet d'afficher des informations, ligne par ligne, à la suite. Dès le moment où tu ne veux plus ce comportement de base, il te faut utiliser un autre système.
Je m'explique: tu as ton terminal, et il a un fonctionnement par défaut, qui est celui que je t'ai décris. Si ce comportement par défaut ne convient pas, alors il faut utiliser un terminal en mode "raw" (sans comportement) et réécrire manuellement ce comportement ! On peut faire cela via "termios" par exemple. Je ne te cache pas que c'est assez compliqué (voire très difficile). Si tu débutes, ça ne sert à rien de te lancer là-dedans.
Il existe aussi des bibliothèques de comportement déjà faites pour cela, comme "ncurses" (tout aussi difficile à prendre en main pour qui débute).
C'est une erreur classique que d'essayer de "tordre" le comportement du terminal. Accepte que c'est comme cela que ça fonctionne et tu gagneras du temps :).
Au pire, tu peux effacer l'écran (en vrai, "effacer un écran" équivaut à sauter autant de lignes que la taille du terminal), pour donner l'illusion, mais ça reste de la bidouille.
Merci ! Et est-il possible d'arrêter ce chrono lorsque l'utilisateur appuie sur la touche entrée.
Avec quelque chose du genre
if (getchar!=13) return 0; ?