반응형

strtol 함수를 사용하면 진법으로 표기된 문자열을 정수로 변환시켜준다.

strtol 함수는 stdlib.h 헤더 파일에 선언되어 있다.

 

strtol(문자열, 끝포인터, 진법); 으로 사용된다.

 

 

strtol(s1, NULL, 16); 에서 16은 16진법으로 표기된 문자열을 정수로 변환해준다.

16대신에 10을 넣어주면 10진법으로 표기된 문자열을 정수로 변환할 수 있다.

 

두번째 인수 NULL 은 여러 개의 정수로 된 문자열을 변환할 때 사용한다.

처음에는 num1 = strtol(s1, &end, 16);와 같이 s1의 첫 부분을 정수로 변환한다.

여기서 끝 포인터는 &end처럼 end의 메모리 주소를 넣어준다.

이렇게 하면 strtol 함수가 실행된 뒤에는 끝 포인터가 " 12 0x11C 7561"처럼 이전 숫자의 끝 부분부터 시작하게 된다.

 

두번째부터는 num2 = strtol(end, &end, 10);와 같이 end를 넣어주어 이전 숫자의 끝 부분부터 변환하면 된다.

더 변환할 문자열이 없다면 num4 = strtol(end, NULL, 10);와 같이 NULL을 넣어주면 됨.

반응형
반응형

atoi 함수를 사용하면 10진법으로 표기된 문자열을 정수로 바꿀 수 있다.

atoi 함수는 stdlib.h 헤더 파일에 선언되어 있다.

 

사용방법은

atoi(문자열); 이다.

int atoi(char const *_string);

 

성공하면 변환된 정수를 반환해주고, 실패하면 0을 반환 해준다.

 

 

문자열은 정수로 되어있어야 하며 알파벳, 특수 문자가 포함되면

해당 문자부터는 반환을 하지 않는다.

 

 

처음부터 숫자가 아니면 0으로 반환된다.

 

반응형
반응형

strtok는 문자열을 자르는 함수이다.

문자열 자르기는 포인터를 이용하는 방식이다.

 

strtok : 문자열을 조각(token)으로 나누다. / (string tokenize)에서 따왔다.

 

strtok는 string.h 헤더 파일에 포함되어 있음

 

strtok는 보안경고가 발생하니 SDL 검사를 꺼줘야 한다.

 

char *ptr = strtok(s1, " "); 부분에서 " "(공백)을 기준으로 잘라준다.

 

strtok는 잘린 문자를 한번에 얻을 수 없으므로 while 반복문을 사용하여

NULL 문자열이 나올 때 까지 반복해준다.

 

 

char s1[30]

1. The 와 Little 사이에 " "를 NULL 문자로 채워준다.

2. 처음 호출 되는 strtok는 첫 부분 The를 자름 / The의 포인터를 반환

3. while 반복문 안에서 strtok에 NULL을 넣어 잘린 문자열 만큼 다음 문자로 이동해준다.

4 Little 과 Prince 사이에 " "를 NULL 문자를 채워준다.

5. Little 의 포인터를 반환한다.

6. strtok에 NULL을 넣어 잘린 문자열 만큼 다음 문자로 이동한다.

7. Prince 뒤에는 이미 NULL 문자가 있으므로 바꾸지 않는다.

8. Prince 의 포인터를 반환한다.

9. strtok에 NULL을 넣어 잘린 문자열 만큼 다음 문자로 이동한다.

10. 직전 strtok에서 공백 문자를 만나지 못했으므로 NULL을 반환하고 while 반복문을 끝낸다.

반응형

+ Recent posts