如何將C中的字符串轉換爲long long?將字符串轉換爲long long C?
我有
char* example = "123";
我想例如轉換爲一個很長很長,所以我想要的東西像
long long n = example;
我怎樣才能做到這一點?
如何將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
存在,雖然。)
請注意,使用'0'作爲第三個參數(「base」)到strtoll ()'會將輸入字符串「0123」解釋爲八進制,因此您可能更願意明確使用base = 10。 – 2013-05-03 21:27:06
提示:這應該是'字符常量*',因爲字符串文字是隻讀的。它會爲你節省很多頭痛,或者至少可以節省複製/粘貼代碼並且不知道C的人。 – 2013-05-03 21:25:42