Affichage d'un compte à rebours - C - Programmation
Marsh Posté le 10-04-2006 à 19:36:27
Pour le 2/
Tu fais
Code :
|
Enfin de mémoire ça remet le curseur en début de ligne.
Marsh Posté le 10-04-2006 à 19:47:25
c0wb0y a écrit :
|
Mais il faut un formatage fixe, sinon c'est laid...
Code :
|
http://mapage.noos.fr/emdel/notes.htm#fflush_stdout
Marsh Posté le 10-04-2006 à 20:54:25
Merci pour ces réponses je pensai au \r mais j'aurais voulu savoir quel est le nom du pointeur du curseur... Enfin bref,si ça marche c'est le principal
Et merci pour m'avoir fait connaître fflush. Ca m'a permi de régler un problème dans mon jeu en le combinant avec stdin!
Marsh Posté le 10-04-2006 à 21:09:40
Par contre je ne vois pas l'utilité de fflush(stdout) ici, car la boucle while force automatiquement l'emmission du "contenu" de printf à chaque boucle entammée.
Marsh Posté le 10-04-2006 à 21:26:13
Omegabahamut a écrit : Et merci pour m'avoir fait connaître fflush. Ca m'a permi de régler un problème dans mon jeu en le combinant avec stdin! |
Heink ? fflush() n'a rien à voir avec stdin. Il ne fonctionnne que sur les flux sortants.
Marsh Posté le 10-04-2006 à 21:27:41
Omegabahamut a écrit : Par contre je ne vois pas l'utilité de fflush(stdout) ici, car la boucle while force automatiquement l'emission du "contenu" de printf à chaque boucle entammée. |
Ah bon ? Comment ?
Tu n'as donc pas lu le lien que je t'ai passé ? Tu ne mets pas de '\n', donc l'émission n'est pas forcée.
Marsh Posté le 11-04-2006 à 01:02:52
> fflush() n'a rien à voir avec stdin.
à mon avis il vide le buffer au début du jeu
Marsh Posté le 11-04-2006 à 01:41:25
nargy a écrit : > fflush() n'a rien à voir avec stdin. |
Ton avis importe peu. La norme dit que fflush() ne concerne que les flux sortants.
Marsh Posté le 11-04-2006 à 01:54:21
> Ton avis importe peu. La norme dit que fflush() ne concerne que les flux sortants.
Explique donc comment faire pour vider stdin au début d'un programme.
Marsh Posté le 11-04-2006 à 01:59:00
nargy a écrit : > Ton avis importe peu. La norme dit que fflush() ne concerne que les flux sortants. |
Pourquoi on ferait ça ? Il faut apprendre à utiliser correctement les fonctions de saisie, c'est tout.
http://mapage.noos.fr/emdel/notes.htm#saisie
http://mapage.noos.fr/emdel/notes.htm#fichiers
Marsh Posté le 11-04-2006 à 02:07:09
> Pourquoi on ferait ça ?
Parce que en général dans un jeu, tu ne désire pas que le joueur puisse donner des réponses à l'avance via un tube.
Dans un jeu de reflexe, tu ne désire pas non plus que quand le joueur a terminé les touches sur lesquelles il a appuyé soient prisent en compte dans le menu principal du jeu.
fflush(stdin) fonctionne sur certains systèmes de cette façon:
Code :
|
Marsh Posté le 11-04-2006 à 02:46:57
nargy a écrit : > Pourquoi on ferait ça ? |
Quand on fait des vrais jeux (pas des exercices), je te rassure, on utilise pas du tout stdin, mais la gestion directe du clavier (conio, SDL etc.)
Marsh Posté le 11-04-2006 à 12:22:25
http://www-ipst.u-strasbg.fr/pat/p [...] tp99-2.htm
Voici un lien d'une université de strasbourg qui utilise fflush avec stdin, de plus je n'ai vu nul part que la norme ISO C90 interdit d'utilser fflush avec stdin, en fin bon c'est moi qui le dit!
Marsh Posté le 11-04-2006 à 12:36:41
ReplyMarsh Posté le 11-04-2006 à 13:12:12
Omegabahamut a écrit : http://www-ipst.u-strasbg.fr/pat/p [...] tp99-2.htm |
Et ça prouve quoi ? Ce code est faux, c'est tout.
Citation : de plus je n'ai vu nul part que la norme ISO C90 interdit d'utilser fflush avec stdin, en fin bon c'est moi qui le dit! |
Le norme fonctionne comme ceci :
"Tout ce qui n'est pas défini est indéfini".
http://www.open-std.org/JTC1/SC22/ [...] /n1124.pdf
Un comportement indéfini peut provoquer n'importe quoi. Si il n'est pas ecrit noir sur blanc que fflush() fonctionne sur les flux entrants, c'est que le comportement est indéfini. C'est un bug aussi grave que de déréférencer un pointeur non initialisé.
Or la définition de fflush() dit ceci :
Citation : |
Marsh Posté le 11-04-2006 à 13:13:05
nargy a écrit : > ISO C90 interdit d'utilser fflush avec stdin |
Il est clairement défini dans C99 (n1124) que le comportement est indéfini !
Marsh Posté le 11-04-2006 à 13:23:06
<<otherwise, the behavior is undefined.>>
=undocumented feature
Marsh Posté le 11-04-2006 à 20:41:41
oui, enfin on retiendra que le comportement n'est pas portable, au mieux ca marche au pir ca plante
de toute facons fflush(<flux entrant> ) n'a pas de sens comme l'a dit emmanuel, les données sont faites pour etre lues
Marsh Posté le 10-04-2006 à 18:33:05
Voilà j'ai créé un compte à rebours avec la fonction sleep()
du genre:
le problème c'est que d'un point de vue graphique c'est pas très jolie donc je voudrais que ce compteur en mode console soit:
1°/Fixe (ne bouge pas sur l'écran même si plusieurs ligne de saisie sont faîtes entre temps)
2°/Que le curseur de l'écran console se repositionne sur le nombre pour le remplacer par le nouveau afin de ne pas avoir toute une liste de nombres à la suite avec saut de ligne ou non.
Merci de votre réponse
Message édité par Omegabahamut le 10-04-2006 à 18:39:31