C언어/C언어 예제

[C언어 소스] strncmp 함수 사용 예제 (부분 문자열 비교)

언제나휴일 2016. 5. 4. 07:20
반응형


[C언어 소스] strncmp 함수 사용 예제 (부분 문자열 비교)


//C언어 표준 라이브러리 함수 사용법 가이드

//int strncmp ( const char * str1, const char * str2, size_t n); 부분 문자열을  비교하는 함수

//검색할 단어를 입력받아 문장에서 단어가 시작하는 위치를 검색하여 출력

 

#include <string.h>

#include <stdio.h>

 

int ehstrncmp(const char *str1, const char *str2,size_t n)

{

    n--;//반환하기 전에 ++str1, ++str2 하기 때문에 1을 미리 빼 주어야 합니다.

    //*str1이 참이면서 *str1 *str2가 같으면 str1 str2를 다음 위치로 이동하는 것을 반복

    for (; *str1 && (*str1 == *str2) && n; ++str1, ++str2,n--);

    return *str1 - *str2;//*str1 *str2의 차이를 반환

}

 

int main (void)

{

    char *src="I am a boy. You are a girl.";

    char query[20] = "";

    int i=0,len=0;

 

    printf("검색할 단어 : ");

    scanf_s("%s",query,sizeof(query));

    len = strlen(query);

 

    printf("== strncmp 함수 이용 ==\n");

    for(i=0; i< src[i];i++)

    {

        if(strncmp(src+i,query,len)==0)//같은 위치를 찾았을 때

        {

            break;//반복문 탈출(str[i]는 참)

        }

    }

    if(src[i])//str[i]가 참인 문자일 때

    {

        printf("인덱스 %d 에서 %s () 발견하였습니다.\n",i, query);

    }

    else

    {

        printf("%s () 없습니다.\n",query);

    }

 

    printf("== ehstrncmp 함수 이용 ==\n");

    for (i = 0; i< src[i]; i++)

    {

        if (ehstrncmp(src + i, query, len) == 0)//같은 위치를 찾았을 때

        {

            break;//반복문 탈출(str[i]는 참)

        }

    }

    if (src[i])//str[i]가 참인 문자일 때

    {

        printf("인덱스 %d 에서 %s () 발견하였습니다.\n", i, query);

    }

    else

    {

        printf("%s () 없습니다.\n", query);

    }

    return 0;

}

 

출력

검색할 단어 : You(입력)

== strncmp 함수 이용 ==

인덱스 12 에서 You () 발견하였습니다.

==ehstrcmp 함수 이용 ==

인덱스 12 에서 You () 발견하였습니다.


언제나 휴일 티스토리 바로가기

언제나 휴일 유튜브 채널 바로가기

반응형