IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

fflush(stdin)


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 2
    Points : 2
    Points
    2
    Par défaut fflush(stdin)
    bonjour,
    je precise tout dabord, je suis un debutant, j apprend le C dans le cadre de mes etudes , voila donc ma question :

    Lors d un exo de tp, nous avons du utiliser la fonction fflush(stdin) pour flasher (la memoire tampon ???) entre deux scanf...

    et en faite j aimerais avoir un peu plus d explication, car il me semble d en d autre cas il n est pas forcement necesssaire de mettre un fflush entre deux scanf non ???

    d autre part pourquoi mettre en parametre de la fonction l entrée standard stdin ???

    enfin voila, c est peut etre un peu flou alors voila l exmple en question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    #include <stdio.h>
    #include <string.h>
     
     
    main (void)
    {
        char lettre, car;
        int cpt = 0;
     
     
        printf("entrez la lettre recherche");
        scanf("%c", &lettre);
     
            fflush(stdin);
     
        printf("entrez une chaine de caracteres");
        scanf("%c",&car);
        while (car != '\n')
            {
                    if ( car == lettre ) cpt ++;
                    scanf ("%c", &car);
            }
        printf ("%c se trouve %d fois", lettre, cpt);
     
        system ("pause"); 
            return 0;
     
    }
    c est assez simple comme exo
    bon et bein j espre que quelqun me repondra !
    merci par avance !

    [Balises CODE ajoutées par Anomaly, merci d'y penser à l'avenir]

  2. #2
    Responsable technique

    Avatar de Anomaly
    Homme Profil pro
    Directeur
    Inscrit en
    Juin 2003
    Messages
    10 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Directeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 335
    Points : 130 269
    Points
    130 269
    Billets dans le blog
    1
    Par défaut
    Premièrement, utiliser fflush(stdin) est une mauvaise pratique ! Non-standard, non compatible avec tous les compilateurs (gcc est dans ce cas, donc c'est important !)

    La FAQ C sur ce sujet

    Ensuite, il se trouve que tu lis UN seul caractère avec scanf. Or, quand une entrée est lue, c'est pas un seul caractère, c'est une ligne entière. Même si tu tapes un seul caractère, il reste la touche "Entrée" dans le tampon, qui sera le prochain caractère lu, sauf si le tampon est vidé.

    getchar() est une manière tout aussi simple de lire un caractère. Mais elle a le même défaut, il faut vider le clavier, de la même manière que proposé dans la FAQ
    Responsable technique forum & site

    Si ce message (ou un autre) vous a aidé et/ou vous semble pertinent, votez pour lui avec

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    grand merci !!!!
    agent smith

    Bon et bein j irais dire a ma prof de c que fflush(stdin) c est mauvais (tout comme elle )

    bref, je vais voir ton tuto tout de suite !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FAQ] fflush(stdin) => Comment vider le buffer clavier ?
    Par troumad dans le forum Contribuez
    Réponses: 7
    Dernier message: 09/10/2013, 14h52
  2. [Debutant] fflush(stdin)
    Par liljip dans le forum C
    Réponses: 3
    Dernier message: 16/03/2007, 19h18
  3. fflush
    Par ggnore dans le forum C
    Réponses: 3
    Dernier message: 06/01/2005, 17h58
  4. fflush(stdin)
    Par lestat dans le forum C
    Réponses: 9
    Dernier message: 23/03/2004, 11h46
  5. descripteur stdin stdout
    Par discogarden dans le forum Réseau
    Réponses: 10
    Dernier message: 08/01/2003, 23h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo