자바나 C#계열 언어와 C언어의 가장 큰 차이점은 문자열 처리 방식이다. 처음 C를 접할 때 가장 이해하기 어려운 부분이기도 하다. C언어에서 문자열은 숫자를 비교하듯 변수 그 자체로 비교할 수 없다. 기본 함수인 strcmp()나 strncmp() 함수를 이용해야 한다.
헤더 파일 : string.h
#include <string.h>
// str1, str2 : 비교 문자열
int strcmp(const char* str1, const char* str2);
포인터로 받는 두 개의 문자 str1과 str2를 비교한다. 각 문자열의 첫 번째부터 비교해서 두 문자가 다르거나, NULL을 만날 때까지 비교한다.
[비교 결과 ]
▶ 일치 : 0
▶ 불일치 : 0이 아닌 값 (str1이 크면 0보다 큰 값, 작으면 0보다 작은 값 리턴)
실전 예제 : strcmp()
[샘플코드]
#include <stdio.h>
#include <string.h> // strcmp 헤더 파일
int main()
{
char str1[10] = "Hello";
char *str2 = "Hello";
int ret = strcmp(str1, str2); // 두 문자열 비교
printf("%d\n", ret); // 비교 결과 출력
return 0;
}
[실행결과]
0
헤더 파일 : string.h
#include <string.h>
// str1, str2 : 비교 문자열
// num : 비교할 최대 문자수
int strncmp(const char* str1, const char* str2, size_t num);
두 문자열의 지정된 길이만큼 문자들을 비교한다.
첫 문자부터 비교하여 다른 문자가 나타나거나 NULL에 도달하거나, 지정된 길이만큼 비교한다.
[비교 결과 ]
▶ 일치 : 0
▶ 불일치 : 0이 아닌 값 (str1이 크면 0보다 큰 값, 작으면 0보다 작은 값 리턴)
실전 예제 : strncmp()
[샘플코드]
#include <stdio.h>
#include <string.h> // strcmp 헤더 파일
int main()
{
char str1[10] = "Hello";
char *str2 = "Hello";
int ret = strncmp(str1, str2, sizeof(str1)); // 두 문자열 비교
printf("%d\n", ret); // 비교 결과 출력
return 0;
}
[실행결과]
0
반응형
'코드리뷰 > C언어 리뷰' 카테고리의 다른 글
[실전 C언어 코딩 리뷰] - 문자열 복사하기[memcpy() vs strncpy()] (0) | 2020.10.03 |
---|---|
실전 C언어 코딩 리뷰 - 문자열 복사하기[strcpy() vs strncpy()] (0) | 2020.10.01 |
댓글