문타쿠, 공부하다.
[C언어 코딩 도장] Unit 41. 문자열의 길이를 구하고 비교하기 본문
41.1 문자열 길이 구하기
문자열의 길이는 strlen 함수로 구할 수 있으며 string.h 헤더 파일에 선언되어 있다.
#include <stdio.h>
#include <string.h>
int main(void)
{
char* s1 = "Hello";
char s2[10] = "Hello";
printf("%d\n", strlen(s1));
printf("%d\n", strlen(s2));
return 0;
}
문자열의 길이를 구할 때는 순수하게 문자열의 길이만 구하며 NULL 부분은 포함되지 않는다.
41.2 문자열 비교하기
두 문자열이 서로 같은지 비교하려면 strcmp 함수를 사용할 수 있으며 마찬가지로 string.h 헤더 파일에 선언되어 있다.
#include <stdio.h>
#include <string.h>
int main(void)
{
char* s1 = "Hello";
char s2[10] = "Hello";
int ret = strcmp(s1, s2);
printf("%d\n", ret);
return 0;
}
#include <stdio.h>
#include <string.h>
int main(void)
{
printf("%d\n", strcmp("aaa", "aaa"));
printf("%d\n", strcmp("aab", "aaa"));
printf("%d\n", strcmp("aab", "aac"));
return 0;
}
strcmp 함수에 비교할 문자열을 넣어주면 결과를 정수로 반환하며, 문자열을 비교할 때 대소문자를 구분한다.
- 0: 아스키 코드를 기준으로 두 문자열이 같을 때
- 1: 아스키 코드를 기준으로 왼쪽 문자열이 클 때
- -1: 아스키 코드를 기준으로 오른쪽 문자열이 클 때
사용자가 입력한 두 문자열을 비교해보자
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main(void)
{
char s1[20];
char s2[20];
printf("문자열을 두 개 입력하세요>> ");
scanf("%s %s", s1, s2);
printf("\n");
int ret = strcmp(s1, s2);
switch (ret)
{
case 0:
printf("두 문자열이 같습니다.\n");
break;
case 1:
printf("%s보다 %s가 더 큽니다.\n", s2, s1);
break;
case -1:
printf("%s보다 %s가 더 큽니다.\n", s1, s2);
break;
default:
break;
}
return 0;
}
'C언어 > C언어 코딩 도장' 카테고리의 다른 글
[C언어 코딩 도장] Unit 42. 문자열을 복사하고 붙이기 (0) | 2023.09.25 |
---|---|
[C언어 코딩 도장] Unit 41. 연습문제 및 심사문제 (0) | 2023.09.25 |
[C언어 코딩 도장] Unit 40. 연습문제 및 심사문제 (0) | 2023.09.24 |
[C언어 코딩 도장] Unit 40. 입력 값을 문자열에 저장하기 (0) | 2023.09.24 |
[C언어 코딩 도장] Unit 39. 연습문제 및 심사문제 (0) | 2023.09.24 |