Bonjour,
Existe-t-il une façon de savoir si prix saisi par l'utilisateur est un float?
Idem pour un int?
Code:
1
2 printf("Prix: "); scanf("%f", &prix);
Version imprimable
Bonjour,
Existe-t-il une façon de savoir si prix saisi par l'utilisateur est un float?
Idem pour un int?
Code:
1
2 printf("Prix: "); scanf("%f", &prix);
Salut,
La fonction scanf te retourne une valeur de retour qui est de 0 ou 1.
Si elle vaut 0 c'est qu'elle n'a pas trouver ce que tu lui as demandé (en loccurence, les %lf %ld ou autre.).
Donc pour savoir si l'utilisateur a bien saisie un float : tu peux procéder comme ceci :
Mais il me semble que si l'utilisateur rentre 12, il sera considérer comme étant 12.00 par le compilateur ce qui en général ne pose pas de problème.Code:
1
2
3
4
5 while ( (scanf("%f", &prix)) != 0 ) { printf(" (Re) Saisir le prix :\n"); };
Merci ;)
Pour scanf("%s")
Je crois qu'il n'y aura pas de problème puisque tout ce qu'on tape peu être considéré comme chaîne de caractères. N'est-ce pas?
Effectivement, mais il reste les caractère d'échappement qui je crois ne peuvent être saisie au clavier.
Si avec ça, je tape 'a' (ou n'importe quel autre caractère qui ne peut figurer dans l'expression d'un float ...), on commence une jolie boucle infinie ... En plus, tu voulais écrire while ( (scanf("%f", &prix)) == 0 ) je pense ...
yo_haha : Pour s'assurer que l'utilisateur n'a pas tapé n'importe quoi, il faut faire la saisie d'une ligne complète (le plus simple c'est d'utiliser fgets) suivie d'une conversion de la chaîne lue vers le type souhaité. Tester si la conversion a réussi.
Lire une ligne avec fgets
Conversion des chaînes