2013-05-03 2 views
1

C에서 문자열을 long long으로 변환하려면 어떻게해야합니까?문자열을 long long C로 변환 하시겠습니까?

내가

char* example = "123"; 

있어 내가 오래 오래로 예를 변환 그래서 나는이 작업을 수행 할 수있는 방법

long long n = example; 

같은 것을 싶어 싶습니다?

+0

팁 : 그것은해야한다'문자의 CONST *', 문자열 리터럴은 읽기 전용이므로. 나중에 두통을 줄여 줄 것이다. 적어도 코드를 복사/붙여 넣기하고 C를 모르는 사람들은 저장하지 않을 것이다. –

답변

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에서 사용할 수없는있어 동등한 기능/strtoul/strtod이 존재 strtol을하지만...)

+2

strtoll에 세 번째 인수 ("base")로 '0'()'는 입력 문자열 "0123"을 8 진수로 해석하므로, base = 10을 명시 적으로 사용하는 것을 선호 할 수 있습니다. –