strcmp() 문자열 비교 함수
#include <stdio.h>
#include <string.h>
int main()
{
char str1[10] = "Hello";
char str2[10] = "He1lo";
char str3[10] = "Hpllo";
int result = 0;
result = strcmp(str1, str2);
printf("result : %d\n", result);
result = strcmp(str1, str3);
printf("result : %d\n", result);
str3[1] = 'e';
result = strcmp(str1, str3);
printf("result : %d\n", result);
return 0;
}
strcmp() 문자열 비교 함수
인자는 2개 필요하며
문자열 주솟값이 필요합니다.
첫 번째 인자의 내용이 두 번째 인자의 내용과 같은지 다른지 판단할 수 있습니다.
첫 번째 인자가 더 크다면 1 반환
두 번째 인자가 더 크다면 -1 반환
같다면 0을 반환합니다.
strcmp() 직접 구현해보기
1. 리턴 타입
2. 인자 형태
3. 기능 로직
리턴 타입은 int형이 됩니다. 크고 작음의 문제와 같을 때 반환되는 게 -1 1 0이기 때문입니다.
인자 형태는 문자열 주소입니다.
int MyStrcmp(char* s1, char* s2)
{
}
기능 구현
크기의 비교는 해당 문자의 아스키코드값으로 판단하게 됩니다.
그리고 마지막까지 꼭 확인을 해야 합니다.
hello
hello1
이 두 개의 문자는 다른 겁니다.
그래서 같은 시점에 두 개의 값이 모두 null 문자가 있어야 합니다.
int MyStrcmp(char* s1, char * s2)
{
while (*s1!='\0' || *s2!='\0') // 널 문자 전까지 반복
{
if (*s1 > *s2) //s1의 값이 크다면
{
return 1; //1 반환
}
else if (*s1 < *s2) //s1의 값이 작다면
{
return -1; //-1 반환
}
if (*s1 == *s2) //두개의 값이 같다면
{
s1++; //주소 증가
s2++; //주소 증가
if (*s1 == '\0' && *s2 == '\0') //마지막으로 널문자가 같다면 0반환
{
return 0;
}
}
}
}
'컴퓨터 프로그래밍 > C' 카테고리의 다른 글
C언어 문자열 처리 함수 (strchr() : 문자 검색) (0) | 2019.07.23 |
---|---|
C언어 문자열 처리 함수 (strstr() : 문자열 검색) (0) | 2019.07.23 |
C언어 문자열 처리 함수 (strcat() : 문자열 이어 붙이기) (0) | 2019.07.23 |
C언어 문자열 처리 함수 (strcpy() :문자열 복사) (0) | 2019.07.23 |
C언어 문자열 처리 함수(strlen() :문자열 길이) (0) | 2019.07.23 |