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 :

alternative a scanf ?


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 51
    Points : 19
    Points
    19
    Par défaut alternative a scanf ?
    Bonjour,
    je cherche une alternative a scanf afin de récupérer une information entrer par l'utilisateur (un float), ou, une lettre ("q" pour quitter le programme), ce que scanf ne me permet pas.
    Merci

  2. #2
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    strtod() et getchar() devraient faire l'affaire.
    Cordialement.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 51
    Points : 19
    Points
    19
    Par défaut
    merci, voici le code que j'ai réalisé avec vos indications et l'aide d'un tutoriel.

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    #include <stdio.h >
    #include <ansi_c.h>  
     
    void clean(const char *buffer, FILE *fp);
     
    int main()
    { 
     
    char chaine[20] = "";
    float erf=0;
    float x=0;
    char* fin = NULL;
    int quit=0;
     
    do
    {
    	printf("Entrez une valeur pour x, ou 'q' pour quitter:\n");
    	fgets(chaine, sizeof(chaine), stdin);
    	clean(chaine, stdin);
     
     
    	if ((chaine[0]==113)  ||(chaine[0]==81)   )
    	    exit(quit)   ;
     
    	x=strtod(chaine, &fin);
    	printf("Chaine: %s, nombre: %lf\n", chaine, x);
     
    }
    while (quit==0) 	;
     
    return 0;
     
    }
     
    //___________________________________________________________________
     
    void clean(const char *buffer, FILE *fp)
    {
        char *p = strchr(buffer,'\n');
        if (p != NULL)
            *p = 0;
        else
        {
            int c;
            while ((c = fgetc(fp)) != '\n' && c != EOF);
        }
    }
    Si vous voyez quelque chose qui ne va pas, ou si vous avez des optimisations à proposer...

  4. #4
    Membre éclairé
    Avatar de Elijha
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Avril 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2003
    Messages : 314
    Points : 742
    Points
    742
    Par défaut
    Salut,

    Sinon tu peu tester la valeur renvoyée par la fonction scanf(...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        float test = 0.0 ;
        char touche = 0 ;
     
        printf("Entrez un float, ou 'q' pour sortir: ") ;
        if(scanf("%f", &test)) {
            printf("Vous avez entré %.2f\n", test) ;
        }
        else if(scanf("%c", &touche)) {
            if(touche=='q') printf("Vous avez quitté l'application.\n") ;
                       else printf("Vous avez frappé : %c", touche) ;
        }
    - Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !
    - Travailler dur n'a jamais tué personne, mais pourquoi prendre le risque (Edgar Bergen)

Discussions similaires

  1. alterner les couleurs dans un tableau avec xsl
    Par Eithelgul dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 03/05/2015, 23h29
  2. alternative à scanf pour un nombre
    Par gromekkool dans le forum Débuter
    Réponses: 5
    Dernier message: 15/05/2013, 08h43
  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