C의 문자열 비교
-
strcmp
함수를 사용하여 문자열 비교 -
strncmp
함수를 사용하여 문자열의 특정 부분 만 비교 -
strcasecmp
및strncasecmp
함수를 사용하여 대소 문자를 무시하는 문자열 비교
이 기사에서는 C에서 문자열을 비교하는 방법에 대한 여러 방법을 소개합니다.
strcmp
함수를 사용하여 문자열 비교
strcmp
함수는<string.h>
헤더에 정의 된 표준 라이브러리 기능입니다. C 스타일 문자열은 \0
기호로 끝나는 문자 시퀀스 일 뿐이므로 함수는 각 문자를 반복과 비교해야합니다.
strcmp
는 두 개의 문자열을 받아서 비교 결과를 나타내는 정수를 반환합니다. 반환되는 숫자는 첫 번째 문자열이 사 전적으로 두 번째 문자열보다 작으면 음수이고, 후자가 전자보다 작 으면 양수, 두 문자열이 동일하면 0
입니다.
다음 예제에서는 함수의 반환 값을 반전하고? :
조건문에 삽입하여 해당 출력을 콘솔에 인쇄합니다.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
const char* str1 = "hello there 1";
const char* str2 = "hello there 2";
const char* str3 = "Hello there 2";
!strcmp(str1, str2) ? printf("strings are equal\n")
: printf("strings are not equal\n");
!strcmp(str1, str3) ? printf("strings are equal\n")
: printf("strings are not equal\n");
exit(EXIT_SUCCESS);
}
출력:
strings are not equal
strings are not equal
strncmp
함수를 사용하여 문자열의 특정 부분 만 비교
strncmp
는<string.h>
헤더에 정의 된 또 다른 유용한 함수로, 문자열 시작 부분에서 여러 문자 만 비교하는 데 활용할 수 있습니다.
strncmp
는 정수 유형의 세 번째 인수를 사용하여 두 문자열에서 비교할 문자 수를 지정합니다. 함수의 반환 값은strcmp
가 반환하는 값과 유사합니다.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
const char* str1 = "hello there 1";
const char* str2 = "hello there 2";
!strncmp(str1, str2, 5) ? printf("strings are equal\n")
: printf("strings are not equal\n");
exit(EXIT_SUCCESS);
}
출력:
strings are equal
strcasecmp
및strncasecmp
함수를 사용하여 대소 문자를 무시하는 문자열 비교
strcasecmp
함수는 대소 문자를 무시한다는 점을 제외하면strcmp
함수와 유사하게 작동합니다. 이 함수는 POSIX와 호환되며 strncasecmp
와 함께 여러 운영 체제에서 사용할 수 있습니다.이 기능은 두 문자열의 특정 문자 수에 대해 대소 문자를 구분하지 않는 비교를 구현합니다. 후자의 매개 변수는 size_t
유형의 세 번째 인수를 사용하여 함수에 전달할 수 있습니다.
이러한 함수의 반환 값은 조건문에서 직접 사용할 수 있습니다.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
const char* str1 = "hello there 2";
const char* str3 = "Hello there 2";
!strcasecmp(str1, str3) ? printf("strings are equal\n")
: printf("strings are not equal\n");
!strncasecmp(str1, str3, 5) ? printf("strings are equal\n")
: printf("strings are not equal\n");
exit(EXIT_SUCCESS);
}
출력:
strings are equal
strings are equal
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook