2012-02-02 3 views
0

Я пишу код, в котором мне нужно разобрать строку на «длинный длинный междунар»Разобрать строку как (длинный длинным) целое

я использовал, чтобы использовать atoi при переходе из строки в целое, я не думаю, что он все еще работает. Что я могу использовать сейчас?

--Thanks

+2

Фраза, которую вы ищете, это «разобрать строку как длинное длинное целое». Оставьте «изменение» политикам :-) –

ответ

5

Использование strtoll() (man page):

#include <stdlib.h> 

long long int n = strtoll(s, NULL, 0); 

(. Это возможно только в C99 и C11, а не в C89) Третий аргумент является число базы для преобразования, и 0 означает «автоматический», то есть десятичный, восьмеричный или шестнадцатеричный, выбираются в зависимости от обычных условных обозначений (10, 010, 0x10). Просто помните об этом, если ваша строка начинается с 0.

+0

100% правильно, но два предупреждения: во-первых, автоматическая база может ввести в заблуждение, потому что 010 - 8 (очевидно, для некоторых - абсурд для других). Во-вторых, это не делает проверку ошибок. Таким образом, «7up» становится равным 7, а «hello» становится равным 0. – ugoren

Смежные вопросы