Convert Strings to Number atoi atof dangerous dont use them

suggest change

Warning: The functions atoi, atol, atoll and atof are inherently unsafe, because: If the value of the result cannot be represented, the behavior is undefined. (7.20.1p1)

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv)
    int val;
    if (argc < 2)
        printf("Usage: %s <integer>\n", argv[0]);
        return 0;

    val = atoi(argv[1]);

    printf("String value = %s, Int value = %d\n", argv[1], val);

    return 0;

When the string to be converted is a valid decimal integer that is in range, the function works:

$ ./atoi 100
String value = 100, Int value = 100
$ ./atoi 200
String value = 200, Int value = 200

For strings that start with a number, followed by something else, only the initial number is parsed:

$ ./atoi 0x200
$ ./atoi 0123x300

In all other cases, the behavior is undefined:

$ ./atoi hello
Formatting the hard disk...

Because of the ambiguities above and this undefined behavior, the atoi family of functions should never be used.

Feedback about page:

Optional: your email if you want me to get back to you:

Table Of Contents