atoi () - chaîne à int
J'ai lu que atoi()
est obsolète, et que c'est équivalent à:
(int)strtol(token_start, (char **)NULL, 10);
Est-ce à dire que je devrais utiliser la dessus au lieu de atoi(chr)
ou est-il juste de dire qu'ils sont équivalents?
source d'informationauteur user105033
Vous devez vous connecter pour publier un commentaire.
Il ne dit sur l'Apple Mac OS X Page de Manuel pour atoi(3) (et dans la BSD homme de pages aussi) que
atoi
a été désapprouvée.Je voudrais utiliser le
strtol()
équivalent justement pour cette raison, mais je doute que vous avez à vous soucier deatoi()
être supprimé.de http://www.codecogs.com/library/computing/c/stdlib.h/atoi.php
Notes de mise en œuvre
atoi
n'est pas obsolète, votre source est incorrecte. Rien dans le présent C de la norme ISO 9899:2011 indique ce (voir par exemple le chapitre 6.11 langue futures directions), ni quoi que ce soit dans les normes antérieures.Conformément à la norme C atoi est équivalent à strtol comme suit, C11 7.22.1.2:
strtol est préféré, comme atoi invoque un comportement non défini lors de l'erreur. Voir 7.22.1 "Si la valeur du résultat ne peut pas être représenté, de la
le comportement est indéfini."
La description de
atoi()
a un point très important en ce qui concerne les similitudes/différences destrtol()
> ... The call atoi(str) shall be equivalent to:
> (int) strtol(str, (char **)NULL, 10)
> except that the handling of errors may differ.
Essayez ceci pour le plaisir:Non, vous ne devriez pas utiliser la dessus au lieu de
atoi
.En fait, vous devez vérifier les informations d'erreur que
strtol
rend disponibles:devrait être remplacé par
cela signifie qu'à un moment donné dans le temps atoi ne sera plus disponible. Donc, commencer à changer votre code maintenant