[C] Rafraichissement console

Pierrestone -  
 Pierrestone -
Bonjour a tous,
Je suis sur un programme en C, je dois recréer un pacman. Et j'aimerais rafraîchir ma console a chaque déplacement de celui-ci. Mon problème est que celle-ci se rafraîchit un peu trop rapidement, la console clignote. Y a-t-il un moyen de changer la fréquence de rafraîchissement. J'ai utilisé pour l'instant la fonction : system("cls") . Merci d'avance
A voir également:

2 réponses

cchristian Messages postés 928 Statut Membre 131
 
Bonsoir,

Essaie avec cette commande :

system ("PING 0.0.0.0 -n 5 > NUL");
system ("cls");

5 représente le nombre de secondes (à actualiser)
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Salut,
C'est quoi cette bidouille absolument pas portable ? lol
Pour faire une pause, autant utiliser sleep(int) de unistd.h.
Cdlt
0
cchristian Messages postés 928 Statut Membre 131 > fiddy Messages postés 11653 Statut Contributeur
 
Bonsoir,

Sous Vista, je ne sais pas mais sous XP la commande sleep est inconnue. Enfin je ne suis pas parvenu à l'utiliser.
0
fiddy Messages postés 11653 Statut Contributeur 1 847 > cchristian Messages postés 928 Statut Membre
 
Je ne parle pas de commandes DOS mais de fonctions en C. La fonction sleep() fait partie de la bibliothèque unistd.h. donc tout à fait portable contrairement aux commandes DOS qui ne marchent que sur les plate-formes Microsoft.
C'est pour ça qu'il n'est pas très conseillé d'utiliser la fonction system() sauf cas particulier. Il est bien mieux d'utiliser les fonctions du langage dans lequel on programme pour assurer la compatibilité quelque soit l'OS.
0
cchristian Messages postés 928 Statut Membre 131 > fiddy Messages postés 11653 Statut Contributeur
 
J'avais bien compris, j'avais d'ailleurs renouvelé le test suivant (je l'avais testé il y a quelques temps):
.........................
#include <unistd.h>

int main() 
   {
     char  rep_clav_choix      = '\0'                        ;
     int   I                   = 0                           ;
     char  enieme     []       = "iere"                      ;
     const int nb_val = 3                                          ;
     float tab_val [nb_val]                                  ;
............................
 sleep (5);
............................


J'obtiens le message suivant :
fatal error C1083: Impossible d'ouvrir le fichier include : 'unistd.h' : No such file or directory
Si je retire #include <unistd.h>
J'obtiens :
error C3861: 'sleep' : identificateur introuvable ce qui semble normal.
0
fiddy Messages postés 11653 Statut Contributeur 1 847 > cchristian Messages postés 928 Statut Membre
 
Il y a fort à parier pour que tu n'utilises pas un compilateur Posix. Et comme unistd est conforme posix, le fichier ne sera pas trouvé. Si tu utilises VC (non posix), utilise simplement la fonction Sleep() (S majuscule) et inclue windows.h
Sinon, petite remarque sur ton petit code.

const int nb_val=3;
float tab_val[nb_val];

Ce n'est pas conseillé. Il est préférable d'utiliser #define NB_VAL 3 au lieu d'utiliser const int pour respecter la norme C90.
Cdlt
0
Pierrestone
 
Merci bien pour ces renseignement. Effectivement la fonction sleep a résolu mon probleme.

Cordialement un amateur de pacman heureux
0