C : Vider Memoire Tampon

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

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Salut,
    Pour vider le buffer clavier en C, il faut faire :
    char c;
    while( (c=getchar())!='\n' && n!=EOF );
    

    Cdlt
    1. 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.
      2. 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.
      3. 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.
      4. Contributeur
        @PIKATOUTSalut,
        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.
      5. @fiddyOups !!..je n'ai tout lu,okay fiddy merci de me le faire remarquer.
    2. pour vider la memoire tampon utilise fflush(stdin) avant de lire le caractere et ça va marcher
      1. Contributeur
        Non, fflush(stdin) a un comportement indéfini.