Problème avec xcode en C

Orilion

Membre confirmé
28 Octobre 2011
11
0
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.
 
Remplace également "Rentré un nombre" par "Rentrez un nombre"
 
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.
 
Dernière édition:
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.
 
Dernière édition:
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.