2013-05-03 221 views
1

如何將C中的字符串轉換爲long long?將字符串轉換爲long long C?

我有

char* example = "123"; 

我想例如轉換爲一個很長很長,所以我想要的東西像

long long n = example; 

我怎樣才能做到這一點?

+0

提示:這應該是'字符常量*',因爲字符串文字是隻讀的。它會爲你節省很多頭痛,或者至少可以節省複製/粘貼代碼並且不知道C的人。 – 2013-05-03 21:25:42

回答

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以查看是否發生溢出。詳情請參閱the manual

(由於歷史的興趣:long long intstrtoll是在C99引入了他們不是在C89/90提供同等功能strtol/strtoul/strtod存在,雖然。)

+2

請注意,使用'0'作爲第三個參數(「base」)到strtoll ()'會將輸入字符串「0123」解釋爲八進制,因此您可能更願意明確使用base = 10。 – 2013-05-03 21:27:06