반응형

【 C 언어 】 #60 문자열을 구분하기 [strtok()함수사용]

 

 strtok() 함수는 이전에 검색한 위치를 저장할 수 있기 때문에 공백을 인지해서 문장을 구분 짓는 코드를 작성해보자.



▶ 문제1  : 영어 문장(문자열)을 입력받고 공백으로 구분하여 화면에 출력하라. 


▶ 실행 결과 :

(이미지 클릭, 확대해서 보세요)



▶ 포인트 


- strtok() 함수 원형 :  char* strtok(char* strToken, const char* strDelimit)


- 함수 사용을 위해 strtok() 함수가 포함 되어 있는 <string.h > 헤더파일을 선언하라.


▶ 프로그램 (답안 예시) : 

(이미지 클릭, 확대해서 보세요)


▶ 프로그램 설명 : 

- strtok() 함수는 내부적으로 이전에 검색한 위치를 저장하고 있다. 따라서 string이 아닌 NULL을 strtok()함수에 넘겨 주면, 검색된 다음 위치부터 자동으로 검색하게 된다.

token = strtok(string,TOKEN);  TOKEN을 " "(공백) 으로 define(정의) 했으므로 공백이 있는지 찾는다. 만약 공백을 찾은 경우, 공백이 있는 자리에 NULL값을 넣은 후 문자열의 선두 번지를 반환 한다.  만약 공백이 없는 경우, 문자 배열 변수 string의 선두 번지를 반환한다.


while(token != NULL)  반환값이 NULL인지 비교한다. NULL이 아니면 token 값을 출력(pus)하고 NULL 이면 while문을 종료 한다.


token = strtok(NULL, TOKEN);  앞의 코딩 문 token = strtok(string,TOKEN)에서 공백을 찾은, 다음 번지부터 다시 공백을 찾는데, 공백이 있을 경우 NULL값을 넣은 후 다음 문자열의 선두 번지를 반환한다. 

- strtok() 함수는 이전에 검색한 위치를 저장하고 있기 때문에 string이 아닌 NULL 값을 strtok()함수에 넘겨주면, 검색된 다음 위치부터 자동으로 검색하게 된다. 


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


▶ 소스코드 다운로드 :  


60 문자열을 구분하기 strtok() 함수 사용하기.cpp



반응형