본문으로 바로가기

바다야크

  1. Home
  2. 컴퓨터/프로그래밍
  3. C언어 strtol 함수 정수 문자열을 진수 선택하여 정수로 변환

C언어 strtol 함수 정수 문자열을 진수 선택하여 정수로 변환

· 댓글개 · 바다야크

C strtol() 정수 문자열을 진수 선택하여 정수로 변환 함수

C언어 숫자 변환 함수 atrtol() 함수는 숫자 문자열을 long형 숫자로 변환합니다.

  • 헤더: stdlib.h
  • 형태: long strtol(const char *restrict str, char **endptr, int base)
  • 인수: char *str 정수로 변환할 문자열
    char **endptr 숫자로 변경하지 못하는 문자열의 시작 위치
    int base 문자열이 가지고 있는 숫자의 진수 (2~32)
  • 반환: long 10진 long형 정수 값

atoi()나 atol()과는 달리 (1) 변환하려는 진수를 선택할 수 있으며, (2) 숫자 문자가 아닌 문자를 만나면 그 포인터 위치를 구해 줍니다. 예로, "2020badayak.com"을 호출하게 되면,

char   *str;
char   *ptr;
long    value;

str   = "2020badayak.com";
value = strtoul( str, &ptr, 10);
  • value에는 2020이 들어 가고
  • ptr에는 숫자로 변화하지 못하는 문자열의 시작 위치를 구해 줍니다.
  • 만약 NULL을 넘겨주면 시작 위치를 구하지 않습니다.

C언어 strtol() 함수 예제

#include <stdio.h>
#include <stdlib.h>

int main( void)
{
   char   *str;
   char   *ptr;
   unsigned long    value;

   str   = "2020badayak.com";
   value = strtoul( str, &ptr, 10);          // 10진수로 변환
   printf( "%s strtoul =%lu    str=%s\n", str, value, ptr);

   value = strtoul( str, &ptr, 8);           // 8진수로 변환
   printf( "%s strtoul =%lu    str=%s\n", str, value, ptr);

   value = strtoul( str, &ptr, 16);          // 16진수로 변환
                                             // 2020bada까지 숫자로 변환이 됩니다.
   printf( "%s strtoul =%lu(0x%lx)    str=%s\n", str, value, value, ptr);

   return 0;
}

C언어 strtol() 예제 실행 결과

]$ ./a.out
2020badayak.com strtol =2020    str=badayak.com
2020badayak.com strtol =1040    str=badayak.com
2020badayak.com strtol =539015898    str=yak.com
]$
SNS 공유하기
💬 댓글 개
이모티콘창 닫기
울음
안녕
감사해요
당황
피폐

이모티콘을 클릭하면 댓글창에 입력됩니다.