반응형

서로 두개의 문자열을 비교해서 같으면 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;

}

두 문자열이 같을 때

두 문자열이 다를 때

다르만 일부 조건이 맞을 때

 

 

 

 

반응형

+ Recent posts