반응형
strncmp
헤더 파일
[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - string.h
int strncmp ( const char * str1, const char * str2, size_t n); 부분 문자열을 비교하는 함수입력 매개 변수 리스트
str1 비교 대상 문자열
str2 비교 대상 문자열
n 비교할 문자 개수
반환 값
같을 때 0, str1이 크면 양의 정수, str2가 크면 음의 정수
strncmp 함수는 사전식으로 문자열을 비교합니다.
사전식 비교란 앞에서 부터 비교하면서 차이가 있는 부분이 있으면 그 부분의 문자의 차이로 비교하는 것을 말합니다.
예를 들어 abcd와 abd를 비교하면 세번째 문자에서 차이가 발생하고 c가 d보다 작으므로 abcd가 abd보다 작다고 판단하는 것을 말합니다.
사용 예
//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 을(를) 발견하였습니다.
사용한 함수
[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - scanf_s
[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - printf
[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - strlen
관련 함수
[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - strcmp
반응형
'언어 자료구조 알고리즘 > C11 표준 라이브러리 함수' 카테고리의 다른 글
strchr 함수 [C언어 표준 라이브러리 함수 가이드] (0) | 2016.01.03 |
---|---|
strncat_s 함수 [C언어 표준 라이브러리 함수 가이드] (0) | 2016.01.03 |
strncat 함수 [C언어 표준 라이브러리 함수 가이드] (0) | 2016.01.03 |
strcat_s [C언어 표준 라이브러리 함수 가이드] (0) | 2016.01.03 |
strcat 함수 [C언어 표준 라이브러리 함수 가이드] (0) | 2016.01.03 |
strcmp 함수[C언어 표준 라이브러리 함수 가이드] (0) | 2016.01.03 |
strncpy_s 함수[C언어 표준 라이브러리 함수 가이드] (0) | 2016.01.03 |
strncpy 함수 [C언어 표준 라이브러리 함수 가이드] (0) | 2016.01.03 |
strcpy_s 함수 [C언어 표준 라이브러리 함수 가이드] (0) | 2016.01.03 |
strcpy 함수 [C언어 표준 라이브러리 함수 가이드] (0) | 2016.01.03 |