본문 바로가기

카테고리 없음

[C언어] 문자를 숫자로 - strtol()

void main(void)
{
	char *endptr;
	char str[] = "abcd";

	long num = strtol(str, &endptr, 16);
	printf("%ld\n", num);
}

프로그램 실행화면


long strtol(const char *nptr, char **endptr, int base);


문자 또는 문자열을 숫자로 바꿔주는 함수 중 하나이다. atoi(), atol()함수와 다른 점이 있다. 넘겨주는 인자의 갯수만 봐도 1개에서 3개로 늘어났다.


nptr은 변환하고자 하는 문자 또는 문자열을 넘겨주는 인자이다. 두 번째 인자는 만약 문자열을 변환하는 도중에 애러가 발생했다면 애러가 발생한 주소값이 저장된다.


어디서 애러가 났는지 알 수 있는 것이다. 3번째 인자는 눈치챘겠지만 몇 진수가 인자로 넘어갔는지 지정할 수 있다.


str[] = "abcd"로 되어있다. f가 없기 때문에 15진수인지 16진수인지 모를수도 있지만 보통 16진수를 쓰기 때문에 별 문제는 안될 것 같다.


'abcd'에 해당하는 10진수의 값이 반환되어 출력되는 것을 볼 수 있다. 반환값의 데이터 타입은 long이다.