Bonjour
Je travaille sur un programme qui n'a pas le droit de planter, je me dois donc de vérifier toutes les erreurs possibles. A un moment du programme, j'ai besoin de convertir des chaînes en nombre. J'ai dans un premier temps utilisé un atoi, étant presque certain que c'étaient des chaines ne contenant que des chiffres qui allaient arriver.
Mais n'était jamais trop prudent, et comme atoi pourrait bien planter pour d'autres raisons, je me tourne donc vers strol pour une meilleure vérification des erreurs.
A partir du man, je trouve assez délicat de faire quelque chose simple...
1) Il faudrait tester si le retour est nul, au quel cas, il peut y avoir une erreur. Sauf que la chaine à convertir peut effectivement être "0" ou "00000", et alors la convertion est correct même si le retour est nul.
2) Si le retour est nul, il faut donc tester la chaine d'origine avec le contenu **endptr. S'il y a égalité, alors c'est une erreur, sinon, il n'y a pas d'erreur.
3) Il faut aussi tester si le retour vaut LONG_MAX ou LONG_MIN, auquel cas, c'est une erreur.
Est-ce correct ? Il y a t-il plus simple ?
Merci d'avance !!!![]()
Partager