Если по случайному совпадению вы хотите преобразовать строку символов в целое число, вы тоже можете это сделать!
char *num = "1024";
int val = atoi(num); // atoi = ASCII TO Int
val
теперь 1024. Очевидно, atoi()
в порядке, и то, что я сказал об этом ранее, относится только ко мне (на OS X (возможно (вставьте шутку Lisp здесь))). Я слышал, что это макрос, который приблизительно соответствует следующему примеру, в котором вместо преобразования используется strtol()
, функция более общего назначения:
char *num = "1024";
int val = (int)strtol(num, (char **)NULL, 10); // strtol = STRing TO Long
strtol()
работает так:
long strtol(const char *str, char **endptr, int base);
Он преобразует *str
в long
, рассматривая его как базовое base
число. Если **endptr
не равно нулю, он содержит первый найденный нецифровый символ strtol()
(но кого это волнует).