설명

숫자 문자열을 long형 숫자로 변환합니다. atoi()나 atol()과는 달리 (1) 변환하려는 진수를 선택할 수 있으며, (2) 숫자 문자가 아닌 문자를 만나면 그 포인터 위치를 구해 줍니다.

예로, "2007forum.falinux.com" 을 호출하게 되면,

   char   *str;
   char   *ptr;
   long    value;

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

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

예제

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

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

   str   = "2007forum.falinux.com";
   value = strtol( str, &ptr, 10);          // 10진수로 변환
   printf( "%s strtol =%ld    str=%s\n", str, value, ptr);

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

   value = strtol( str, &ptr, 16);          // 16진수로 변환
                                            // 2007f까지 숫자로 변환이 됩니다.
   printf( "%s strtol =%ld    str=%s\n", str, value, ptr);

   return 0;
}
]$ ./a.out
2007forum.falinux.com strtol =2007    str=forum.falinux.com
2007forum.falinux.com strtol =1031    str=forum.falinux.com
2007forum.falinux.com strtol =131199    str=orum.falinux.com

 

출 처 : http://forum.falinux.com/zbxe/index.php?document_srl=408138&mid=C_LIB

'Programming > C' 카테고리의 다른 글

strtol() 정수 문자열을 진수 선택하여 정수로 변환  (0) 2014.03.17
sscanf  (0) 2014.02.10
strerror() 함수  (0) 2013.12.04
c99 표준 tagged structure initialization  (0) 2011.06.16
win32 DLL에서 CString 사용하기!  (0) 2009.05.11

댓글을 달아 주세요

 «이전 1 2 3 4 5 6 7 ··· 98  다음»