将字符串转换为long long C?

Tom*_*mmy 1 c string casting

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

我有

char* example = "123";
Run Code Online (Sandbox Code Playgroud)

我想把例子转换成很长的时间,所以我想要类似的东西

long long n = example;
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Ker*_* SB 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! */ }
Run Code Online (Sandbox Code Playgroud)

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

(由于历史的兴趣:long long intstrtoll是在C99引入了他们不是在C89/90提供等效的功能.strtol/ strtoul/ strtod存在,虽然).

  • 注意,使用`0`作为第三个参数("base")到`strtoll()`会将输入字符串"0123"解释为八进制,因此您可能更喜欢明确使用base = 10. (2认同)