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 averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 51
    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 Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    strtod() et getchar() devraient faire l'affaire.
    Cordialement.

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

    Informations forums :
    Inscription : Octobre 2009
    Messages : 51
    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 émérite
    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 : 55
    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
    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) ;
        }

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