Revision as of 16:51, 30 September 2010 edit216.94.244.169 (talk) duh, that is a redirect to here.← Previous edit | Revision as of 16:57, 30 September 2010 edit undo216.94.244.169 (talk) →DeficienciesNext edit → | ||
Line 13: | Line 13: | ||
It is impossible to tell whether the string holds valid sequence of digits that represents the number 0 or invalid number as the function returns 0 in both cases. The newer function ] does not have this deficiency. | It is impossible to tell whether the string holds valid sequence of digits that represents the number 0 or invalid number as the function returns 0 in both cases. The newer function ] does not have this deficiency. | ||
'''atoi''' is neither ], nor ] on some operating systems.<ref name="codecogs_atoi">http://www.codecogs.com/reference/c/stdlib.h/atoi.php</ref> | |||
Also, '''atoi''' only converts base ten ascii values (this may also be a benefit depending on perspective). ] and other functions support alternate bases such as hexadecimal and octal. | |||
==Standards conformance== | ==Standards conformance== |
Revision as of 16:57, 30 September 2010
atoi is a function in the C programming language that converts a string into an integer numerical representation. atoi
stands for ASCII to integer. It is included in the C standard library header file stdlib.h
. Its prototype is as follows:
int atoi(const char *str);
The str
argument is a string, represented by an array of characters, containing the characters of a signed integer number. The string must be null-terminated. When atoi encounters a string with no numerical sequence, it returns zero (0).
There are several variants of the atoi function, atol, atof and atoll , which are used to convert a string into a long
, double
, or long
long
type, respectively. The atoll was formerly known as atoq and was included into C99.
Deficiencies
It is impossible to tell whether the string holds valid sequence of digits that represents the number 0 or invalid number as the function returns 0 in both cases. The newer function strtol does not have this deficiency.
atoi is neither thread-safe, nor async-cancel safe on some operating systems.
Also, atoi only converts base ten ascii values (this may also be a benefit depending on perspective). strtol and other functions support alternate bases such as hexadecimal and octal.
Standards conformance
The atoi, atof, and atol functions are a part of the ISO standard C library (C89), while the atoll function is added by C99.
However, because of the ambiguity in returning 0 and lack of thread-safety and async-cancel safety on some operating systems, atoi is considered to be deprecated by strtol.
References
The Version 7 Unix Manual Pages © 1979 by Bell Telephone Laboratories, Incorporated.
The Version 1 Unix Manual page for atoi written by Ken Thompson (November 1971).