본문 바로가기

프로그램언어/C언어

c언어 문자열 분리함수와 문자열에서 일치되는 문자 검색과 일치되지 않는 문자검색 함수

c언어 strtok()함수는 문자열을 토큰으로 분리하는데 사용하는 함수로 string.h 라이브러리에서 제공하고 있습니다. strtok()함수를 사용하기 위해서는 헤더파일에 #inlcude <string.h>를 추가해야 합니다.

 

strtok() 함수 : 문자열을 특정 구분기호로 분리하고자 할 때 사용, 구분기호를 발견하면 해당 문자를 NULL로 바꾸고 토큰(분리 문자열)을 반환합니다. strtok 함수를 사용할 때 주의할 점은 첫 번째호출할 때는 토큰으로 분리시킬 문자열을 지정하지만, 두 번째 호출할 때는 문자열을 지정하면 안됩니다. 그래서 strtok함수의 s1에 NULL로 기술하는 것입니다.

 

함수 원형

    char *strtok(char *s1, const char *s2);

strToken : 토큰을 포함하고 분리될 문자열의 포인터
strDelimit : 문자셋 포인터
반환값 : s1에서 발견된 토큰의 주소를 반환합니다. 만약 더 이상 토큰이 없으면 널 포인터를 반환합니다.

 

소스코드 실행 결과

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

int main() 
{ 
    char s1[] = "This is edu-coding.tistory.com website"; 
    char s2[] = " "; 
    char *token = NULL; 

    token = strtok(s1, s2); 

    while (token != NULL) 
    { 
        printf("token = %s", token); 
        putchar('\n'); 
        token = strtok(NULL, s2); 
    } 

    return 0; 
}

token = This
token = is
token = edu-coding.tistory.com
token = website


c언어 strspn()함수는 문자열에서 일치되지 않는 첫 번째 문자의 위치를 검색하는 함수로 string.h 라이브러리에서 제공하고 있습니다. strspn()함수를 사용하기 위해서는 헤더파일에 #inlcude <string.h>를 추가해야 합니다.

 

strspn() 함수 : 문자열에서 일치되지 않는 첫 번째 문자의 위치를 검색합니다. 대문자와 소문자 구분하여 검색을 하고 s2로 끝나는 NULL문자는 고려하지 않습니다. s1문자열에서 s2를 모두 일치하는 문자로 구성되어 있으면 s1의 길이를 반환합니다.

 

함수 원형

    size_t strspn(const char *s1, const char *s2);

s1 : 검색할 문자열의 포인터
s2 : 검색할 문자셋의 포인터
반환값 : 0을 기준으로 일치되지 않는 첫 문자의 인덱스 반환하고 일치하지 않은면 0을 반환합니다.

 

strcspn : 문자열에서 일치되는 첫 번째 문자의 위치를 검색합니다.(대소문자 구분)
size_t strcspn(const char *str, const char *strCharSet);
str : 검색할 문자열의 포인터
strCharSet : 검색할 문자셋의 포인터
반환값 : 0을 기준으로 일치되지 않는 첫 문자의 인덱스, 일치하지 않은면 문자열 길이 반환

 

소스코드 실행 결과

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

int main() 
{ 
    char string[20] = "cabbage"; 
    int  result; 

    //문자열에서 a, b, c중 없는 첫 번째 위치를 검색 
    result = strspn(string, "abc"); 
    printf("%d, %s\n", result, &string[result]); 

    strcpy(string, "CAbaSdF"); 
    //문자열에서 A, b, C중 없는 첫 번째 위치를 검색 
    result = strspn(string, "AbC"); 
    printf("%d, %s\n", result, &string[result]); 

    strcpy(string, "aaabbbccc"); 
    //문자열에서 A, b, C중 없는 첫 번째 위치를 검색 
    result = strspn(string, "abc"); 
    printf("%d, %s\n", result, &string[result]); 

    strcpy(string, "xyzbxz"); 
    //문자열에서 a, b, c 중 일치하는 첫 번째 위치를 검색 
    result = strcspn(string, "abc"); 
    printf("%d, %s\n", result, &string[result]); 

    return 0; 
}

5, ge 
3, aSdF 
9, 
3, bxz