Re: 45.1과 46.2 질문입니다.
, 도장_ 관리자님이 작성strtok 함수는 많은 사람이 어려워합니다. 이미 많은 질문이 있습니다.
포럼 상단에 strtok로 검색하면 이전 답변을 볼 수 있습니다.
strtol 함수에 대해서는 Unit 46.2 처음에 함수의 원형이 쓰여 있습니다.
strtol(문자열, 끝포인터, 진법);
long strtol(char const *_String, char **_EndPtr, int _Radix);
성공하면 변환된 정수를 반환, 실패하면 0을 반환
첫 번째 인수는 char const *입니다. 간단히 char *이지만, 함수 내부에서 값이 변경되면 안 되니까 const로 지정합니다.
두 번째 인수는 변환이 끝난 문자열의 위치를 가리키는 포인터로 char** _EndPtr입니다.
문자열을 char *로 받았고, 변환이 끝난 위치를 가리키는 포인터가 필요하니까 char**입니다.
char를 가리킬 필요가 있다 -> char*로 가리킨다.
영어로는 char*이 pointer to char입니다.
char*를 가리킬 필요가 있다 -> char**로 가리킨다.
영어로는 char**이 pointer to char*입니다.
그러나 char*를 가리킬 때 주소만 필요하다면 & 주소 연산자를 붙여서
address of char*로 전달해도 됩니다. address와 pointer는 호환되니까요.
strtol 함수는 문자열 하나를 숫자 하나로 변환하는 함수가 아닙니다.
문자열에 있는 여러 숫자를 모두 숫자로 변환할 수 있는 함수입니다.
따라서 다음 호출에는 다음 위치를 전달하면 됩니다.
이에 대한 설명은 그림 46-1과 그 아래 string_to_long_multiple_integers.c에 설명되어 있습니다.