C 프로그래밍에서 strtok()으로 문자열을 분할하는 방법은 무엇입니까?

C Peulogeulaeming Eseo Strtok Eulo Munjayeol Eul Bunhalhaneun Bangbeob Eun Mueos Ibnikka



문자열 분할 텍스트 처리, 데이터 분석 또는 구문 분석과 같은 다양한 이유로 중요하며 C 프로그래밍 언어는 이 작업을 처리하는 다양한 방법을 제공합니다. 그러나 가장 널리 사용되는 C 함수는 분할 문자열 지정된 구분 기호로 여러 토큰으로 strtok() . 라이브러리 함수이므로 문자열 연산을 지원하는 표준 C 라이브러리에서 사용할 수 있습니다.

strtok() 함수는 어떻게 작동합니까?

다음을 사용하여 문자열을 분할하려면 strtok() , 먼저 작동 방식을 이해해야 합니다. 그만큼 strtok() 구분 기호를 만날 때까지 문자별로 입력 문자열을 읽습니다. 구분 기호가 발견되면 strtok() null 문자 '\0'으로 대체하여 원래 문자열을 효과적으로 두 부분으로 나눕니다. 그런 다음 문자열의 첫 번째 문자에 대한 포인터가 함수에 의해 반환됩니다. 그만큼 strtok() 함수의 구문은 다음과 같습니다.

strtok ( * str , const * 나는 공유한다 ) ;

그만큼 strtok() 함수는 토큰 집합의 첫 번째 토큰에 대한 포인터와 구분 기호 문자를 포함하는 문자열의 두 가지 인수를 사용합니다. 마지막 토큰을 분할하는 구분 기호 바로 뒤에 시작되는 다음 토큰에 대한 포인터를 반환합니다. 더 이상 토큰이 없으면 NULL을 반환합니다.







C 프로그래밍에서 Strtok()으로 문자열을 분할하는 방법은 무엇입니까?

다음은 사용 방법의 예입니다. strtok() 문자열을 분할하려면:



#include

#include <문자열.h>

정수 기본 ( ) {

입력 [ ] = '리눅스,힌트' ;

* 토큰 ;

토큰 = strtok ( 입력 , ',' ) ;

~하는 동안 ( 토큰 != 없는 ) {

printf ( '%에스 \N ' , 토큰 ) ;

토큰 = strtok ( 없는 , ',' ) ;

}

반품 0 ;

}

위의 예에서 먼저 char에 대한 포인터를 선언합니다. 그런 다음 strtok() 입력 문자열을 토큰으로 분할합니다. 의 첫 번째 호출 strtok() 입력 문자열과 구분 기호 문자열 ','의 두 가지 인수를 사용합니다. 첫 번째 토큰인 'Linux'는 strtok() 에 대한 포인터로 반환 . 그런 다음 while 루프를 사용하여 다음을 사용하여 입력 문자열을 반복합니다. strtok() NULL 포인터를 사용하여 나머지 토큰 분할을 계속합니다. 구분 기호 문자열이 다시 인수로 전달됩니다. strtok() 구분 문자를 나타냅니다.

산출

Strtok() 함수의 한계

1: 원본 문자열 수정

그만큼 strtok() 함수는 문자열의 복사본을 반환하지 않습니다. 대신 원래 문자열을 수정합니다. 따라서 문자열을 분할한 후 수정되지 않은 버전의 문자열이 필요한 경우 호출하기 전에 원래 문자열의 복사본을 만들어야 합니다. strtok() .

2: 비동기식

한 가지 중요한 제한 사항 strtok() 한 번에 하나의 문자열에만 사용할 수 있다는 것입니다. 즉, 여러 문자열을 동시에 토큰화하는 데 사용할 수 없습니다.

3: 제한된 용량

또 다른 잠재적 한계는 strtok() 반복 구분 기호를 처리할 수 있는 용량이 제한되어 있습니다. 예를 들어 문자열에 단어 사이에 연속 공백이 있는 경우 strtok() 단일 구분 기호로 취급합니다. 이러한 경우를 처리하려면 다른 접근 방식을 사용해야 합니다.

결론

그만큼 strtok() function은 C 프로그래밍에서 문자열을 분할하는 데 매우 유용한 함수입니다. 입력 문자열과 구분 기호 문자열을 사용하여 입력 문자열에서 찾은 첫 번째 토큰에 대한 포인터를 반환합니다. strtok() 파괴적이므로 원래 문자열의 무결성을 유지해야 하는 경우 대신 복제본을 만드는 것이 좋습니다. 이제 방법을 알았으므로 처리를 위해 모든 문자열을 더 작은 조각으로자를 수 있습니다.