Преобразование строки в long long
Я использовал решение, данное в
Тревожное преобразование строки в long long в C
преобразовать строку в long long в C. Я использую Microsoft Visual Studio 2012.
При компиляции я получаю ошибку
LNK2019: не восстановленный внешний символ _+ атолл, на который ссылается функция _main.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char s[30] = { "115" };
long long t = atoll(s);
printf("Value is: %lld\n", t);
return 0;
}
2 ответа
atoll
устарела и, похоже, не включена в новейшую версию VS. использование strtoll
long long t = strtoll(s, NULL, 10);
Если это недоступно либо посмотрите, если _strtoi64
есть (имеет такой же прототип).
Функция atoll была введена в стандартный язык C в C99.
К сожалению, Microsoft долгое время игнорировала C99 и не реализовала ни одной из его функций в компиляторе Visual Studio C, вплоть до VS 2012 года.
Это изменилось с VS 2013, который добавил значительную, но не полную поддержку C99.
Возможно, самый простой вариант - использовать _strtoi64, который должен быть доступен, но имейте в виду, что это специфическая функция Microsoft, поэтому, вероятно, она не будет работать, если вы попытаетесь скомпилировать код в другом месте.