본문 바로가기
IVS/C 프로그래밍

[C++] 문자열 처리- strcmp, strcpy, strcat

by 코곰_ 2025. 1. 9.

 

 

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 값으로 비교한다.

  1. str1과 str2의 각 문자를 차례로 비교
  2. 두 문자가 다르면, 해당 문자의 ASCII 값 차이를 반환
  3. 모든 문자가 동일하다면 0을 반환
  4. 널 문자(\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!