반응형
서로 두개의 문자열을 비교해서 같으면 0을 반환하고, 왼쪽이 크면 +1 작으면 -1을 반환하는 함수이다.
아래 예를 보면 알 수 있다. (알파벳도 결국 아스키 코드이며, 그 아스키 코드값으로 비교한다)
#define _CRT_SECURE_NO_WARNINGS // 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>
#include <string.h>
int main()
{
printf("%d \n", strcmp("ABCD", "ABCD")); // 같으므로 0을 반환
printf("%d \n", strcmp("ABCD", "ABCC")); // C < D 이므로 s1이 값이큼. 0보다 큰값 반환. (왼쪽이 큼)
printf("%d \n", strcmp("ABCD", "ABCDE")); // ABCD까지 같으나, E값이 나와서 s2가 더 큼. 0보다 작은값 반환.(오른쪽이 큼)
return 0;
}
반응형
위 원리를 이용해서 아래와 같이 만들 수 있다.
2번의 문자열을 입력해서 그 두 문자열을 비교해서 일치여부 파악
#define _CRT_SECURE_NO_WARNINGS // fopen 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>
#include <string.h>
int main()
{
char str1[20];
char str2[20];
printf("문자열 입력 1: ");
scanf("%s", str1);
printf("문자열 입력 2: ");
scanf("%s", str2);
// str1, str2가 같으면 0이 출력 그럼 False가 되는데, !(not)을 붙임으로 써 True를 만들어서 if 내부를 실행 시킴.
if (!strcmp(str1, str2))
{
puts("두 문자열은 완벽히 동일합니다.");
}
else
{
puts("두 문자는 동일하지 않습니다.");
// str1, str2 의 3번째 까지 문자를 비교해 일치하면 0을 반환하는데 if(False),그러나 !을 만나서 if(TRUE) 이므로 내부를 실행함.
if (!strncmp(str1, str2, 3))
puts("그러나 앞 세글자는 동일합니다.");
}
return 0;
}
두 문자열이 같을 때
두 문자열이 다를 때
다르만 일부 조건이 맞을 때
반응형
'C언어 \ C++' 카테고리의 다른 글
[C언어] 구조체(struct) 에 대해서, C언어 구조체란? 구조체 사용방법, 구조체 선언과 동시에 초기화 (0) | 2022.03.01 |
---|---|
[C언어] 두 문자열(string)을 합치는 함수 (strcat함수, strncat함수) (0) | 2022.02.27 |
[C언어] 문자열(string)을 복사하는 함수 (문자열 메모리를 복사, strcpy, strncpy 함수) (0) | 2022.02.27 |
[C언어] 문자열(string)의 길이를 보는 함수 (strlen 함수) (0) | 2022.02.27 |
[C언어] 문자열 출력 버퍼(buffer) 비우는 함수 fflush() 함수 (0) | 2022.02.27 |