c strtok 예제

예상되는 연산은 외부 수행 while 루프가 각 소수자릿수 문자열(“1.2″, “3.5″, “4.2″)으로 구성된 세 개의 토큰을 만들어야 하며, 각 토큰은 strtok이 내부 루프를 호출하는 각각을 별도의 숫자 문자열(“1″, “2″, “3″, “5″, “4″)으로 분할해야 합니다. , “2″). strtok에 대한 첫 번째 호출은 포인터를 첫 번째 하위 문자열로 반환합니다. 첫 번째 인수가 NULL인 모든 다음 호출은 첫 번째 호출에서 전달된 문자열을 사용하고 다음 하위 문자열을 반환합니다. 함수는 더 이상 하위 문자열을 사용할 수 없는 경우 NULL을 반환합니다. 이 호환 솔루션에서 토큰화되는 문자열은 strtok() 호출 후 참조되지 않는 임시 버퍼로 복사됩니다: strtok_s를 사용하여 예제와 함께 올바른 응답을 생성합니다. : strtok_r() C의 strtok() 함수와 마찬가지로 strtok_r(strtok_r()은 문자열을 토큰 시퀀스로 구문 분석하는 것과 동일한 작업을 수행합니다. strtok_r()는 strtok() C11의 재진입 버전으로, strtok_s라는 스레드 안전 및 재진입 버전을 제공하는 선택적 부품인 부속서 K가 있습니다. __STDC_LIB_EXT1_____로 기능을 테스트할 수 있습니다. 이 선택적 부품은 널리 지원되지 않습니다. 이 예제에서는 strtok() 함수를 사용하여 첫 번째 인수를 콜론 구분 토큰으로 구문 분석합니다. 새 줄의 문자열에서 각 단어를 출력합니다.

PATH가 “/usr/bin:/usr/sbin:/sbin”이라고 가정합니다. 실제 응용 프로그램 스트톡은 일부 구분 기호를 기반으로 여러 문자열로 문자열을 분할하는 데 사용할 수 있습니다. 이 함수를 사용하여 간단한 CSV 파일 지원을 구현할 수 있습니다. CSV 파일에는 계각량으로 쉼표가 있습니다. 아래 프로그램은 strtok_r()을 사용하는 중첩 루프를 사용하여 문자열을 토큰의 두 수준 계층 구조로 나누기 합니다. 첫 번째 명령줄 인수는 구문 분석할 문자열을 지정합니다. 두 번째 인수는 해당 문자열을 “major” 토큰으로 구분하는 데 사용할 구분 기호 바이트를 지정합니다. 세 번째 인수는 “major” 토큰을 하위 토큰으로 구분하는 데 사용할 구분 기호 바이트를 지정합니다. strtok는 구문 분석하는 동안 정적 버퍼를 사용하기 때문에 스레드가 안전하지도 않고 다시 참여하지도 않습니다. 즉, 함수가 strtok를 호출하는 경우 strtok를 사용하는 동안 호출하는 함수도 strtok를 사용할 수 없으며 strtok를 사용하는 함수에서 호출할 수 없습니다.

strtok 함수는 문자열을 토큰화하는 데 사용되므로 구분 기호로 나눈 여러 문자열로 구분합니다. 또 다른 가능성은 초기 인수를 수정하지 않는 strtok()의 고유한 구현을 제공하는 것입니다. strtok() 함수는 구문 분석하는 동안 정적 버퍼를 사용하므로 스레드가 안전하지 않습니다. 이것이 당신에게 중요한 경우 strtok_r()를 사용합니다. C 함수 strtok()는 구문 분석할 초기 문자열과 const-qualified 문자 구분 기호라는 두 개의 인수를 취하는 문자열 토큰화 함수입니다. 토큰의 첫 번째 문자에 대한 포인터 또는 토큰이 없는 경우 null 포인터에 대한 포인터를 반환합니다. 함수 strtok는 구분 기호 집합을 사용하여 문자열을 더 작은 문자열 또는 토큰으로 나눕습니다. 다른 saveptr 인수를 지정 하는 strtok_r() 호출 시퀀스를 사용 하 여 다른 문자열을 동시에 구문 분석 될 수 있습니다.