UNIT46 strtol 질문있습니다.
, 김 동형님이 작성int main() {
char* s1 = "0xaf10 42 0x27c 9952";
int num1;
int num2, num3, num4;
char* end;
num1 = strtol(s1, &end, 16);
num2 = strtol(end, &end, 10);
num3 = strtol(end, &end, 16);
num4 = strtol(end, NULL, 10);
printf("%x\n%d\n%x\n%d\n", num1, num2, num3, num4);
return 0;
}
num1=strtol(s1,&end,16);에서 &end 가 들어가는 이유를 모르겠어요
예로 num1=strtol(s1,NULL,16); (s1에 문자열 포인터로 "0xaf10"넣었을때)는
문자열 마지막에NULL이 있으니깐 이해가 되는데
char* s1 = "0xaf10 42 0x27c 9952"; 만 적혀있고
end로 16진수하고 10진수 끊어서 정수로 변환 하려는건 알겠어요.
그런데 char *end;로 문자열 끝포인터로 넣어준다는게 무슨 말인지 이해가 안돼요. 서로 무슨 관계가 있나요?
Re: UNIT46 strtol 질문있습니다.
, 도장_ 관리자님이 작성이전 답변을 참고하세요.
strtol과 strtok는 동작이 같습니다.
UNIT 45의 이해가 완벽하지 않으면 UNIT 46의 이해가 어렵습니다.
UNIT 45의 strtok의 동작부터 이해하는 게 필요합니다.