J'ai besoin de convertir une chaîne en un flotteur. Si la chaîne n'est pas un numéro que je veux retourner 0.Pourquoi la fonction atof() ne renvoie pas 0 lorsque je lui passe une chaîne avec des caractères non valides après un nombre?
J'ai essayé de tester si la fonction atof()
fonctionnerait pour cela en utilisant le code suivant:
printf("%f", atof("1a"));
De ma compréhension de atof, la valeur renvoyée lorsque atof ne peut pas convertir est 0, et pourtant cette ligne affiche 1.0
.
Pourquoi cela se produit-il? Par la documentation j'ai compris que atof est censé retourner 0 quand l'entrée n'est pas un nombre.
vous pourriez être mieux d'utiliser: 'strtod()'. Notez que 'atof()' renvoie un 'double', pas un' float'. Note: la fonction: 'atof()' verra le '1' comme un nombre valide et retournera le résultat de la conversion: 1.000000. Il n'y a aucune raison de renvoyer 0,000000 car il y a un nombre valide à convertir. – user3629249