[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 921 Date d'inscription   Statut Membre Dernière intervention   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 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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 921 Date d'inscription   Statut Membre Dernière intervention   131 > fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention  
 
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 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846 > cchristian Messages postés 921 Date d'inscription   Statut Membre Dernière intervention  
 
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 921 Date d'inscription   Statut Membre Dernière intervention   131 > fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention  
 
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 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846 > cchristian Messages postés 921 Date d'inscription   Statut Membre Dernière intervention  
 
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