1

如何在 C 中将字符串转换为 long long?

我有

char* example = "123";

我想将 example 转换为 long long 所以我想要类似的东西

long long n = example;

我怎样才能做到这一点?

4

1 回答 1

11

使用功能strtoll

#include <stdlib.h>
#include <errno.h>

char const * example = "123";

char * e;
errno = 0;

long long int n = strtoll(example, &e, 0);

if (*e != 0 || errno != 0) { /* error, don't use n! */ }

实际上,e将指向转换后的序列之后的下一个字符,因此您可以使用它进行更复杂的解析。就目前而言,我们只是检查整个序列是否已转换。您还可以检查errno是否发生溢出。有关详细信息,请参阅手册

(出于历史兴趣:long long intstrtoll在 C99 中引入。它们在 C89/90 中不可用。但等效函数//strtol存在。)strtoulstrtod

于 2013-05-03T21:16:04.900 回答