구문
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
endptr
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
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
#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); } |
결과
'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 |
댓글