본문 바로가기
IT/SW

[strtol, wcstol, _strtol_l, _wcstol_l] strtol 예제

by 낭만테라스 2018. 7. 19.
구문
long strtol(  
   const char *nptr,  
   char **endptr,  
   int base   
);  
long wcstol(  
   const wchar_t *nptr,  
   wchar_t **endptr,  
   int base   
);  
long _strtol_l(  
   const char *nptr,  
   char **endptr,  
   int base,  
   _locale_t locale  
);  
long _wcstol_l(  
   const wchar_t *nptr,  
   wchar_t **endptr,  
   int base,  
   _locale_t locale  
);  


매개 변수

nptr
Null로 끝나는 변환할 문자열입니다.

endptr
검색을 중지 하는 문자에 대 한 포인터입니다.

base
사용할 기 수입니다.

locale
사용할 로캘입니다.


strtol문자열에 표시 되는 값을 반환 nptr표현 하면 오버플로가 발생할 것 때 않는 경우 반환 점을 제외 하 고, LONG_MAX 또는 LONG_MIN합니다.strtol변환이 수행할 수 있으면 0을 반환 합니다. wcstol유사에 값을 반환 하므로 strtol합니다. 두 함수에 대 한 errno 로 설정 된 ERANGE 오버플로 또는 언더플로 발생 하는 경우.


예제

#include <stdlib.h>  
#include <stdio.h>  
  
int main( void )  
{  
   char   *string, *stopstring;  
   double x;  
   long   l;  
   int    base;  
   unsigned long ul;  
  
   string = "3.1415926This stopped it";  
   x = strtod( string, &stopstring );  
   printf( "string = %s\n", string );  
   printf("   strtod = %f\n", x );  
   printf("   Stopped scan at: %s\n\n", stopstring );  
  
   string = "-10110134932This stopped it";  
   l = strtol( string, &stopstring, 10 );  
   printf( "string = %s\n", string );  
   printf("   strtol = %ld\n", l );  
   printf("   Stopped scan at: %s\n\n", stopstring );  
  
   string = "10110134932";  
   printf( "string = %s\n", string );  
  
   // Convert string using base 2, 4, and 8:  
   for( base = 2; base <= 8; base *= 2 )  
   {  
      // Convert the string:  
      ul = strtoul( string, &stopstring, base );  
      printf( "   strtol = %ld (base %d)\n", ul, base );  
      printf( "   Stopped scan at: %s\n", stopstring );  
   }  
}  

string = 3.1415926This stopped it  
   strtod = 3.141593  
   Stopped scan at: This stopped it  
  
string = -10110134932This stopped it  
   strtol = -2147483648  
   Stopped scan at: This stopped it  
  
string = 10110134932  
   strtol = 45 (base 2)  
   Stopped scan at: 34932  
   strtol = 4423 (base 4)  
   Stopped scan at: 4932  
   strtol = 2134108 (base 8)  
   Stopped scan at: 932  


* https://msdn.microsoft.com/


< 예제 만들어 Test >

코드 작성

#include <stdio.h>

#include <stdlib.h>


int main(void)

{

char *param = "11";

char *ptr;

long hexData;


// 10진수로 변환

hexData = strtol(param, &ptr, 10);

printf("10진수로 hexData(%d) hexData(0x%x)\r\n", hexData, hexData);


// 16진수로 변환

hexData = strtol(param, &ptr, 16);

printf("16진수로 hexData(%d) hexData(0x%x)\r\n", hexData, hexData);



}



결과




# string to hex # string to hexa # strtol # wcstol # 스트링을 헥사로 # _strtol_l






'IT > SW' 카테고리의 다른 글

파일 전송 XMODEM 이란  (0) 2018.07.24
ntsysv 에서 서비스 시작  (0) 2018.07.11
X-window (x11) 란?  (0) 2018.07.11
Frame buffer 란  (0) 2018.07.11
DirectFB + GTK+ (cross compile)  (0) 2018.07.11

댓글