atoi(str) is unsafe This is the prefered method: (int)strtol(str, (char **)NULL, 10)
int i = (int)(c - '0');
const char *number = "10"; char *end; long int value = strtol(number, &end, 10); if (end == number || *end != '\0' || errno == ERANGE) printf("Not a number"); else printf("Value: %ld", value);