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 :

reaction scanf (%f)


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Par défaut reaction scanf (%f)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include<stdio.h>
    main()
    {
    float prix;
    do
    {
    printf("Prix:\n");
    scanf("%f", &prix);
    fflush(stdin);	
    }
    while(scanf("%f", &prix)==0);
    return 0;
    }
    Bonsoir,
    Il me faut entrer deux valeurs pour que la machine réagisse. Pourriez-vous m'expliquer?
    Aussi, je voudrais savoir comment supprimer un caractère ou encore une chaine de caractères dans un fichier?

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Il te demande deux caractères parce que tu fais deux scanf ( si si ).
    J'explique :
    tu fais le do
    {
    Tu affiche ta phrase "prix :"
    tu fais donc un scanf pour demander un prix
    tu flush l'entrée ( pas obligatoire )
    } et ce qui ce passe , c'est lorsque le programme va faire le while il va lire ce qu'il a entre les parenthèse , et executer ce qu'il a , donc redemander le prix.

    tu peux faire un truc dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    int error= 0;
     
    do
    {
    printf("Prix\n");
    error = scanf("%f",&prix);
    fflush(stdin);
    }while(error == 0)
    Comme ça il n'y a plus qu'un seul executer par la boucle.
    ( Si tu n'as pas compris pourquoi avant il executer deux scanf n'hésite pas à redemander )

    Pour le fichier , cela dépend du cas.
    Il faut que tu ouvre le fichier, que tu repère ( par le programme ) ce qu'il faut enlever et que tu ferme le fichier.
    Enfin normalement je ferai plus un truc dans ce genre
    ouvre fichier1
    ouvre un deuxième fichier2
    lit fichier et si on veut garder ecrit cette info dans fichier2
    si on veut pas garder on ecrit pas
    ferme les deux fichiers

    ( Il doit y avoir mieux , mais bon c'est la méthode que j'ai trouvé sur le coup )
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 142
    Par défaut
    Salut,

    Effectivement tu effectue 2 scanf quoi qu'il arrive, de plus avec une boucle do while tu parcours obligatoirement une fois ta boucle donc inutile de mettre un scanf de plus

  4. #4
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    A noter que le comportement de fflush() sur un flux d'entrée comme stdin est indéfini.
    Il ne faut utiliser fflush() que sur des flux de sortie.
    Pour purger le flux d'entrée, voir les fonctions "communautaires" largement publiées sur le forum (chercher par exemple fclean() sur le forum)

  5. #5
    Membre éclairé
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Par défaut
    Je vous remercie pour les informations.
    LittleWhite, je n'ai pas compris la méthode de suppression d'une chaîne d'un fichier!
    Ce que j'ai compris c'est qu'on ouvre le fichier, on lit et on ferme??!!

  6. #6
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Tu copies tout le contenu dans un fichier vers un autre à l'exception de la chaîne à supprimer. Tu supprimes l'ancien fichier (fonction remove) puis renomme le nouveau (fonction rename) ...

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

Discussions similaires

  1. scanf
    Par bourinator dans le forum C
    Réponses: 8
    Dernier message: 26/09/2003, 14h04
  2. bp scanf...
    Par drKzs dans le forum C
    Réponses: 6
    Dernier message: 18/09/2003, 23h08
  3. PB avec scanf
    Par ché dans le forum C
    Réponses: 6
    Dernier message: 13/08/2003, 07h25
  4. [debutant]la fonction scanf
    Par kalaka dans le forum C
    Réponses: 7
    Dernier message: 01/07/2003, 15h15
  5. Réponses: 6
    Dernier message: 10/09/2002, 03h35

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