strtol 함수는 정수로 구성된 문자열 str을 세번째 파라미터인 진수체계로 판단하여 long 형식 값으로 반환한다. 더이상 계산할 수 없는 문자를 발견하면 두번째 파라미터인 endptr에 해당 위치를 저장한다.
#include <stdlib.h>
long strtol (const char* str, char** endptr, int base);
파라미터
- str : long 형식 값을 구할 문자열
- endptr : 계산을 끝낸 위치를 저장할 문자열
- base : 진수
리턴 값 : 계산된 long 형식 값
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
char src[100]="123 ff 16 1001 -10";
char *pos=NULL;
long value1=0,value2=0,value3=0,value4=0, value5=0;
value1 = strtol(src,&pos,10); // 10진수로 계산
value2 = strtol(pos,&pos,16); // 16진수로 계산
value3 = strtol(pos,&pos,8); // 8진수로 계산
value4 = strtol(pos,&pos,2); // 2진수로 계산
value5 = strtol(pos,&pos,10); // 음수값 10진수로 계산
printf("%ld %ld %ld %ld %ld\n",value1,value2,value3,value4, value5);
return 0;
}
strtoul 함수는 정수로 구성된 문자열 str을 세번째 파라미터인 진수체계로 판단하여 unsigned long 형식 값으로 반환한다. 더이상 계산할 수 없는 문자를 발견하면 두번째 파라미터인 endptr에 해당 위치를 저장한다.
#include <stdlib.h>
unsigned long strtoul(const char *nptr,char **endptr,int base);
파라미터
- str : unsigned long 형식 값을 구할 문자열
- endptr : 계산을 끝낸 위치를 저장할 문자열
- base : 진수
리턴 값 : 계산된 unsigned long 형식 값
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
char src[100] = "123 ff 16 1001 8A7B6C5D";
char *pos = NULL;
unsigned long value1 = 0, value2 = 0, value3 = 0, value4 = 0, value5 = 0;
value1 = strtol(src, &pos, 10); // 10진수로 계산
value2 = strtol(pos, &pos, 16); // 16진수로 계산
value3 = strtol(pos, &pos, 8); // 8진수로 계산
value4 = strtol(pos, &pos, 2); // 2진수로 계산
value5 = strtol(pos, &pos, 16); // 16진수로 계산해서 16진수로 출력
printf("%lu %lu %lu %lu %08lX\n", value1, value2, value3, value4, value5);
return 0;
}
이와 비슷한 기능으로 strtod, strtof, strtold, strtol, strtoll, strtoul, strtoull 함수가 존재한다.
string to double / float / long double / long / long long / unsigned long / unsigned long long 으로 구분하면 편하다.
'프로그래밍 > C' 카테고리의 다른 글
#ifdef 와 #if defined() 의 차이 (0) | 2023.01.31 |
---|---|
C ] sscanf() 사용법 (0) | 2023.01.15 |
C ] strtok, strtok_r : 구분 문자로 문자열 쪼개기 (0) | 2023.01.15 |
윈도우 소켓 ] 소켓 프로그래밍 용어 및 함수 정리 (0) | 2023.01.01 |
윈도우 소켓 ] TCP 에코 서버, 클라이언트 및 동작원리 (0) | 2023.01.01 |