将字符串转换为long long C?
问题描述:
如何将C中的字符串转换为long long?将字符串转换为long long C?
我有
char* example = "123";
我想例如转换为一个很长很长,所以我想要的东西像
long long n = example;
我怎样才能做到这一点?
答
使用功能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
以查看是否发生溢出。详情请参阅the manual。
(由于历史的兴趣:long long int
和strtoll
是在C99引入了他们不是在C89/90提供同等功能strtol
/strtoul
/strtod
存在,虽然。)
+2
请注意,使用'0'作为第三个参数(“base”)到strtoll ()'会将输入字符串“0123”解释为八进制,因此您可能更愿意明确使用base = 10。 – 2013-05-03 21:27:06
提示:这应该是'字符常量*',因为字符串文字是只读的。它会为你节省很多头痛,或者至少可以节省复制/粘贴代码并且不知道C的人。 – 2013-05-03 21:25:42