C : Vider Memoire Tampon

WRIDANIOS Messages postés 24 Statut Membre -  
PIKATOUT Messages postés 2053 Statut Membre -
Bonjour,
Je programme en C ,au niveau des etude, depuis 10/2007, mon problem est lorsque je v saisir un caractaire , le compilateur depase la saisie , j'ai utiliser scanf("%c",&car) ou car=getchar()
mais le meme problem , j'ai bien conclu que c'est a cause de la memoir tampon , ils ont ma dis de vider la memoire tampon avant d'effectuer la saisie . j'ai essayer 'fflush(0)' du header "unistd.h" , mes c'est tjr le meme probleme . Quoi faire, meci d'avance...

3 réponses

fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Salut,
Pour vider le buffer clavier en C, il faut faire :
char c;
while( (c=getchar())!='\n' && n!=EOF );

Cdlt
3
WRIDANIOS Messages postés 24 Statut Membre 1
 
personne pe m'aider .. svp..
1
civic89
 
salut, pour vider la memoire tampon, il suffit d'ouvrir le registre
Cliquez sur le bouton Démarrer, sur Exécuter… puis saisissez Regedit. Validez par OK.
Rendez vous à la clé HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management

Dans la partie droite de la fenêtre, double cliquez alors sur la valeur ClearPageFileAtShutdown puis saisissez 1 dans le champ Données de la valeur. Cliquez sur OK.
Fermez la base de registres puis redémarrez votre ordinateur pour valider les changements.
a chaque demarrage, la mémoire sera vidée.
0
PIKATOUT Messages postés 2053 Statut Membre 353
 
Bonsoir, c'est a la fermeture quand tu éteind le PC que le fichier d'échange (mémoire virtuelle) aussi appelé "fichier Swap"sera nettoyé : Pour des raisons de sécurité et d'optimisation, il est possible d’activer la purge de ce fichier à l'arrêt de la machine. Cette fonction est désactivée par défaut car elle augmente « sommairement » le temps de fermeture du système d'exploitation.Éditez la valeur en double cliquant sur la valeur :
ClearPageFileAtShutdown
et donnez-lui la valeur 1.
0
PIKATOUT Messages postés 2053 Statut Membre 353
 
Ce n'est pas une mémoire tampon;mais bien un fichier d'échange créé sur le disque dur, c'est la mémoire virtuelle.
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847 > PIKATOUT Messages postés 2053 Statut Membre
 
Salut,
Non t'y es pas là. Effectivement le problème est dû au tampon clavier et non à fichier d'échange créé sur le disque dur.
0
PIKATOUT Messages postés 2053 Statut Membre 353 > fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention  
 
Oups !!..je n'ai tout lu,okay fiddy merci de me le faire remarquer.
0
med003
 
pour vider la memoire tampon utilise fflush(stdin) avant de lire le caractere et ça va marcher
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Non, fflush(stdin) a un comportement indéfini.
0