반응형

출처 : http://forum.falinux.com/zbxe/?document_srl=408126&mid=C_LIB&sort_index=readed_count&order_type=desc

설명

문자열을 문자로 자르는 함수 입니다. 예로, "forum.falinux.com"을 "."으로 자르기를 하면 함수를 호출할 때 마다 "forum", "falinux", "com"의 선두 번지의 포인터를 반환합니다.

처음에는 자르기 대상인 문자열과 자르기를 위한 문자를 인수로 호출합니다.

strtok( str, sep);

이후에는 문자열 대상을 NULL과 자르기를 위한 문자만 인수로 전달합니다.

strtok( NULL, sep);

더 이상 구할 문자열이 없다면 NULL이 반환됩니다.

*** 주의 ***

strtok()는 잘라 낸 문자열을 구하기 위해 대상 문자열에 NULL을 추가합니다. 즉, 원래의 문자열 내용이 변경 되므로 주의해야 합니다.

헤더 string.h
형태 char *strtok(char *restrict s1, const char *restrict s2);
인수
char *s1 자르기 대상 문자열
char *s2 잘라 내기 위한 문자 모임
반환
char * 잘라 내기한 문자열의 첫번째 포인터를 반환하며, 문자열이 없다면 NULL을 반환

예제

#include <stdio.h>
#include <string.h>

int main( void)
{           
   char   str[] = "forum falinux com";
   char	*ptr;
   int	 ndx;

   printf( "함수 호출 전: %s\n", str); 

   ptr = strtok( str, " ");
   printf( "%s\n", ptr); 
   
   while( ptr = strtok( NULL, " "))
   {
	   printf( "%s\n", ptr); 
   }
   
   printf( "함수 호출 후: %s\n", str); 

   // 함수 호출 후에는 원본 문자열의 내용이 바뀌므로 주의해야 합니다.
        
   printf( "문자열의 변화\n", str); 
  
   for( ndx=0; ndx < 17; ndx++)
	   printf( "%c %d\n", str[ndx], str[ndx]); 
	   
   return 0;
}
]$ ./a.out
함수 호출 전: forum falinux com
forum
falinux
com
함수 호출 후: forum
문자열의 변화
f 102
o 111
r 114
u 117
m 109
 0
f 102
a 97
l 108
i 105
n 110
u 117
x 120
 0
c 99
o 111
m 109
반응형

'C & C++ 관련' 카테고리의 다른 글

[ANSI-C] __FUNCTION__ 을 바꾸자.  (0) 2008.10.23
터미널 제어 termios  (0) 2008.08.17
C언어에서 \n 과 \r 의 차이는 무엇인가요  (2) 2008.08.17
Posted by Real_G