strcmp
- strcmp 함수는 C/C++에서 두 문자열을 사전 순으로 비교하는 함수이다.
- 문자열을 사전식 정렬하거나 비교 연산을 수행할 때 사용된다.
헤더파일
#include <cstring>
함수 원형
int strcmp(const char* str1, const char* str2);
- 매개변수
- const char* str1: 비교할 첫 번째 문자열.
- const char* str2: 비교할 두 번째 문자열.
- 반환값
- 음수: str1이 str2보다 사전 순으로 앞선 경우.
- 0: str1과 str2가 동일한 경우.
- 양수: str1이 str2보다 사전 순으로 뒤에 있는 경우.
작동원리
strcmp는 두 문자열의 각 문자를 ASCII 값으로 비교한다.
- str1과 str2의 각 문자를 차례로 비교
- 두 문자가 다르면, 해당 문자의 ASCII 값 차이를 반환
- 모든 문자가 동일하다면 0을 반환
- 널 문자(\0)를 만나면 비교를 멈춘다.
Sol1) 직접 구현하기
#include <bits/stdc++.h>
using namespace std;
int main(void)
{
char arr[10];
char brr[10];
bool flag = false;
cin >> arr;
cin >> brr;
int len_a = strlen(arr);
int len_b = strlen(brr);
//int answer = strcmp(arr, brr);
//if (answer != 0) {
// printf("다른 문자열");
//}
if (len_a != len_b) {
printf("다른 문자열");
}
else {
for (int x = 0; x < len_a; x++) {
if (arr[x] != brr[x]) {
flag = true;
break;
}
}
}
for (int i = 0; i<10; i++) {
if (arr[i] != brr[i]) {
flag = false;
break;
}
if (!flag) {
printf("같은 문자열");
}
else {
printf("다른 문자열");
}
}
return 0;
}
Sol2) strcmp 내장함수 사용
* 주의: 같을 경우 return = 0
#include <bits/stdc++.h>
using namespace std;
int main(void)
{
char arr[10];
char brr[10];
bool flag = false;
cin >> arr;
cin >> brr;
int len_a = strlen(arr);
int len_b = strlen(brr);
int answer = strcmp(arr, brr);
if (len_a != len_b) {
printf("다른 문자열");
}
else {
if (answer != 0) {
printf("다른 문자열");
}
}
return 0;
}
strcpy
함수 원형
char* strcpy(char* destination, const char* source);
작동 원리
- 하나의 문자열을 다른 문자열로 복사
- 복사된 문자열은 널 문자(\0)로 끝난다.
예시
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char source[] = "Hello";
char destination[10];
strcpy(destination, source);
cout << "Source: " << source << endl;
cout << "Destination: " << destination << endl;
return 0;
}
출력
Source: Hello
Destination: Hello
strcat
함수 원형
char* strcat(char* destination, const char* source);
작동 원리
- 두 개의 문자열을 연결(결합)
- 첫 번째 문자열의 끝에 두 번째 문자열을 추가
- 결과 문자열은 널 문자(\0)로 끝남
예시
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char first[20] = "Hello, ";
char second[] = "World!";
strcat(first, second);
cout << "Result: " << first << endl;
return 0;
}
출력
Result: Hello, World!
'IVS > C 프로그래밍' 카테고리의 다른 글
[C/C++] 배열 초기화 - memset, fill (0) | 2025.01.13 |
---|---|
[C] 형변환, 비트연산자 (1) | 2025.01.13 |
[C++] 공백있는 문자열 입력받기 - getline (2) | 2025.01.09 |
[C++] 중첩 반복문 - continue, break (0) | 2025.01.08 |
[C++] 포인터 (0) | 2025.01.08 |