C : Vider Memoire Tampon

Fermé
WRIDANIOS Messages postés 24 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 11 mai 2009 - 8 avril 2008 à 11:40
PIKATOUT Messages postés 1933 Date d'inscription dimanche 25 mai 2008 Statut Membre Dernière intervention 27 septembre 2013 - 2 avril 2009 à 19:26
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
31 mars 2009 à 00:18
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 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 11 mai 2009 1
8 avril 2008 à 12:01
personne pe m'aider .. svp..
1
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 1933 Date d'inscription dimanche 25 mai 2008 Statut Membre Dernière intervention 27 septembre 2013 353
30 mars 2009 à 23:58
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 1933 Date d'inscription dimanche 25 mai 2008 Statut Membre Dernière intervention 27 septembre 2013 353
31 mars 2009 à 00:01
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835 > PIKATOUT Messages postés 1933 Date d'inscription dimanche 25 mai 2008 Statut Membre Dernière intervention 27 septembre 2013
31 mars 2009 à 00:26
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 1933 Date d'inscription dimanche 25 mai 2008 Statut Membre Dernière intervention 27 septembre 2013 353 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
2 avril 2009 à 19:26
Oups !!..je n'ai tout lu,okay fiddy merci de me le faire remarquer.
0
pour vider la memoire tampon utilise fflush(stdin) avant de lire le caractere et ça va marcher
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
31 mars 2009 à 00:17
Non, fflush(stdin) a un comportement indéfini.
0