C언어 함수 중 진법에 맞추어 문자열을 숫자로 바꾸어 주는 strtol()함수가 있습니다.

그런데 이 편한 함수를 모르시는 분이 많은 것 같아요.

학습할 때는 알고 있었지만, 자주 사용하는 함수가 아니어서 잊어 버리는 것 같습니다.


아래의 예는 "0x"로 시작하는 문자열이면 16진수로,

그냥 숫자라면 10진수로 반환해 주는 함수입니다.


static int str_to_number( char *p_str)

{

  char  *p_temp;

  int  rst;


  if ( 0 == strncasecmp( p_str, "0x", 2)) {

    rst = strtol( p_str+2, &p_temp, 16);

    if ( p_str+2 == p_temp){

       rst = -1;

    }

  } else

      rst = atoi( p_str);


    return rst;

}