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...

--
GET BUSY................UBUNTU.....
Configuration: Linux
Firefox 2.0.0.13

3 réponses

  1. fiddy Messages postés 441 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
  2. WRIDANIOS Messages postés 24 Statut Membre 1
     
    personne pe m'aider .. svp..
    1
    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
    2. 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
    3. 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
      1. fiddy Messages postés 441 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
      2. PIKATOUT Messages postés 2053 Statut Membre 353 > fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Oups !!..je n'ai tout lu,okay fiddy merci de me le faire remarquer.
        0
  3. med003
     
    pour vider la memoire tampon utilise fflush(stdin) avant de lire le caractere et ça va marcher
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Non, fflush(stdin) a un comportement indéfini.
      0