언어 자료구조 알고리즘/C11 표준 라이브러리 함수

strcmp 함수[C언어 표준 라이브러리 함수 가이드]

언제나휴일 2016. 1. 3. 15:20
반응형

strcmp


헤더 파일

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - string.h


int strcmp ( const char * str1, const char * str2 ); 문자열을  비교하는 함수
 
입력 매개 변수 리스트
str1 비교 대상 문자열
str2 비교 대상 문자열
반환 값
같을 때 0, str1이 크면 양의 정수, str2가 크면 음의 정수
 
strcmp 함수는 사전식으로 문자열을 비교합니다.
사전식 비교란 앞에서 부터 비교하면서 차이가 있는 부분이 있으면 그 부분의 문자의 차이로 비교하는 것을 말합니다.
예를 들어 abcdabd를 비교하면 세번째 문자에서 차이가 발생하고 cd보다 작으므로 abcdabd보다 작다고 판단하는 것을 말합니다.
 
사용 예
//C언어 표준 라이브러리 함수 사용법 가이드
//int strcmp ( const char * str1, const char * str2 ); 문자열을  비교하는 함수
//문자열 배열에서 같은 이름을 찾아서 출력
 
#include <string.h>
#include <stdio.h>
 
int ehstrcmp(const char *str1, const char *str2)
{
    //*str1이 참이면서 *str1 *str2가 같으면 str1 str2를 다음 위치로 이동하는 것을 반복
    for (; *str1 && (*str1 == *str2); ++str1, ++str2);
    return *str1 - *str2;//*str1 *str2의 차이를 반환
}
 
int main (void)
{
    char names[5][20]={"홍길동","강감찬","을지문덕","이순신","유관순"};
    char query[20] = "";
    int i=0,ecount=0;
 
    printf("검색할 이름 : ");
    scanf_s("%s",query,sizeof(query));//검색할 이름 입력
    ecount = sizeof(names)/sizeof(names[0]);//원소의 개수 계산
 
    printf("== strcmp 함수 이용 ==\n");
    for(i=0; i< ecount;i++)
    {
        if(strcmp(names[i],query)==0)//같은 문자열을 찾을 때
        {
            break;//반복문 탈출(i ecount보다 작음)
        }
    }
 
    if(i<ecount)//i ecount보다 작으면
    {
        printf("인덱스 %d %s () 있습니다.\n",i, query);//찾은 결과 출력
    }
    else
    {
        printf("%s () 없습니다.\n",query);
    }
 
    printf("== ehstrcmp 함수 이용 ==\n");
    for (i = 0; i< ecount; i++)
    {
        if (ehstrcmp(names[i], query) == 0)
        {
            break;
        }
    }
    if (i<ecount)
    {
        printf("인덱스 %d %s () 있습니다.\n", i, query);
    }
    else
    {
        printf("%s () 없습니다.\n", query);
    }
    return 0;
}
 
출력
검색할 이름 : 이순신(입력)
== strcmp 함수 이용 ==
인덱스 3 에 이순신 이() 있습니다.
== ehstrcmp 함수 이용 ==
인덱스 3 에 이순신 이() 있습니다.



사용한 함수

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - scanf_s

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - printf


관련 함수

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - strncmp

반응형