혼자 공부하는 C 언어 - YES24
혼자 해도 충분하다! 1:1 과외하듯 배우는 C 프로그래밍 자습서이 책은 독학으로 C 언어를 배우는 입문자가 ‘꼭 필요한 내용을 제대로’ 학습할 수 있도록 구성했다. ‘무엇을’ ‘어떻게’ 학
www.yes24.com
문자열을 비교할 때는 strcmp와 strncmp 함수를 사용합니다.
이중 strcmp 함수부터 살펴보겠습니다. strcmp 함수는 두 문자열의 사전 순서를 판단하여 그 결과를 반환합니다. 사전 순서는 사전에 단어가 수록되는 알파벳 순서를 말하며, 함수의 사용법과 반환값은 다음과 같습니다.
strcmp(str1, str2);
// str1이 str2보다 사전에 나중에 나오면 1 반환
// str1이 str2보다 사전에 먼저 나오면 -1 반환
// str1과 str2가 같은 문자열이면 0 반환
간단한 예제를 살펴보겠습니다.
//strcmp, strncmp 함수를 사용한 문자열 비교
#include <stdio.h>
#include <string.h>
int main(void)
{
char str1[80] = "pear";
char str2[80] = "peach";
printf("사전에 나중에 나오는 과일 이름 : ");
if (strcmp(str1, str2) > 0) // str1이 str2보다 크면(사전에 나중에 나오면)
printf("%s\n", str1); // str1 출력
else // str1이 str2보다 크지 않으면
printf("%s\n", str2); // str2 출력
return 0;
}
strcmp 함수가 어떻게 동작하는지 하나씩 살펴보겠습니다.
strcmp 함수는 두 문자열에서 우선 첫 문자의 아스키 코드 값을 비교합니다. 아스키 코드 값은 알파벳 순서에 따라 커지므로 아스키 코드 값이 크면 사전의 뒤에 나오는 문자열이 됩니다.
첫 문자가 같으면 다음 문자의 아스키 코드 값을 차례로 비교하여 판단합니다. 마지막 문자까지 같으면 같은 문자열입니다.
사전 순서를 판단한 결과를 반환값으로 알려줍니다. 두 문자열 중에서 사전의 뒤에 나오는 문자열을 출력합니다.
strncmp 함수는 strcmp 함수와 거의 같지만 비교할 문자 수를 세 번째 인수로 지정할 수 있습니다.
즉, pear와 peach의 앞에서부터 3개의 문자만 비교하는 경우 결과로 0을 반환합니다. 9~13행을 다음과 같이 수정해서 다시 컴파일하고 실행결과를 적어봅시다.
printf("앞에서 3개의 문자만 비교하면?\n");
if (strncmp(str1, str2, 3) == 0) // 앞에서 3개의 문자가 같으면 0반환
printf("같다.\n"); // "같다" 출력
else // 그렇지 않다면
printf("다르다.\n"); // "다르다" 출력
strcmp 함수의 반환값으로 사전 순서를 판단할 때는 반드시 대소문자를 일치시켜야 합니다.
숫자나 특수문자가 포함된 경우도 아스키 코드 값의 크기를 비교하여 반환값을 결정합니다. 한글은 2바이트로 구현하는데 첫 번째 바이트의 코드 값이 어떤 아스키 코드 값보다 크므로 아스크 문자로 구성된 단어보다 사전에서 뒤에 나오는 단어로 처리됩니다. 물론 한글 자체의 코드 값은 가다나순으로 커집니다.
'프로그래밍언어 > C 언어' 카테고리의 다른 글
[혼자 공부하는 C언어] 지역 변수 (0) | 2022.12.10 |
---|---|
[혼자 공부하는 C언어] 연산 함수 직접 구현 (0) | 2022.12.10 |
[혼자 공부하는 C언어] 문자열 길이를 계산하는 strlen 함수 (0) | 2022.12.10 |
[혼자 공부하는 C 언어] 문자열을 붙이는 strcat, strncat 함수 (0) | 2022.12.10 |
[C 언어] 원하는 개수의 문자만을 복사하는 strncpy 함수 (0) | 2022.12.10 |