J’essaie de savoir si il existe un autre moyen de conversion de chaîne en entier en C.
Je fais régulièrement ce qui suit dans mon code.
Oui, y a-t-il un court trajet ou une autre façon
J’essaie de savoir si il existe un autre moyen de conversion de chaîne en entier en C.
Je fais régulièrement ce qui suit dans mon code.
Oui, y a-t-il un court trajet ou une autre façon
Il est strtol
ce qui est mieux IMO. J'ai aussi pris goût en strtonum
, afin de l'utiliser si vous en avez (mais rappelez-vous, il n'est pas portable):
long long
strtonum(const char *nptr, long long minval, long long maxval,
const char **errstr);
Vous pourriez également être intéressé en strtoumax
et strtoimax
, qui sont la norme. Par exemple, vous pourriez dire:
uintmax_t num = strtoumax(s, NULL, 10);
if (num == UINTMAX_MAX && errno == ERANGE)
/* Could not convert. */
De toute façon, rester à l'écart de atoi
:
L'appel atoi(str) est équivalente à:
(int) strtol(str, (char **)NULL, 10)
sauf que la gestion des erreurs peuvent différer. Si la valeur ne peut pas être représentée, le comportement est indéfini.
``solution avec gestion des erreurs robuste. Basé sur la solution C++ de http://stackoverflow.com/a/6154614/895245
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.