# Problème avec xcode en C



## Orilion (28 Octobre 2011)

J'ai eu une surprise en créaient en exécutant un petit scripte, le voilà:

#include <stdio.h>

int main (int argc, const char * argv[])
{

    double a= 0;
    printf("Rentré un nombre\n");
    scanf("%f", &a);
    printf("\n Vous avez rentré %f ", a);
    return 0;
}

Il me donne :

Rentré un nombre
23.4

 Vous avez rentré 0.000000  Program ended with exit code: 0

Le problème se règle en mettant float a la place de double.

J'amerai bien savoir pourquoi j'ai se problème et comment le résoudre.


----------



## mpergand (29 Octobre 2011)

Remplace %f par %lf


----------



## Orilion (29 Octobre 2011)

Je te remercie pour ta réponse.


----------



## bokeh (30 Octobre 2011)

Remplace également "Rentré un nombre" par "Rentrez un nombre"


----------



## Orilion (31 Octobre 2011)

C'est fait.

C'est posible de vérifié si l'utilisateur rentre autre choses qu'un nombres et protéger le code de tout bug.

Car s'il rentre une lettre a la place d'un nombre le code se répète tous seul a l'infinie.


----------



## ntx (31 Octobre 2011)

Tu programmes la saisie d'une chaîne et tu l'analyses après saisie pour voir si elle correspond bien à un nombre flottant : signe + ou -, suite de caractères de 0 à 9, séparateur décimal, suite de caractères de 0 à 9 pour une représentation "classique" d'un flottant. Je te laisse voir pour une représentation "scientifique". Ensuite tu convertis ta chaîne en double.

A noter que la fonction strtod permet de faire ce boulot et gère une erreur.


----------



## Orilion (31 Octobre 2011)

ntx a dit:


> Tu programmes la saisie d'une chaîne et tu l'analyses après saisie pour voir si elle correspond bien à un nombre flottant : signe + ou -, suite de caractères de 0 à 9, séparateur décimal, suite de caractères de 0 à 9 pour une représentation "classique" d'un flottant. Je te laisse voir pour une représentation "scientifique". Ensuite tu convertis ta chaîne en double.
> 
> A noter que la fonction strtod permet de faire ce boulot et gère une erreur.



Tu peut explique un plus  la fonction strtod s'il te plait, sinon je comprends le principe.


----------



## Nyx0uf (31 Octobre 2011)

http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/strtod.3.html


----------



## Orilion (31 Octobre 2011)

Merci, bonne journée a toi


----------

