본문 바로가기
카테고리 없음

문자열 복사하기 strcpy, strncpy 함수 사용법 & 예제 + 구현

by kangs' tong 2023. 8. 14.

strcpy 함수란

strcpy 함수는 C 언어에서 문자열을 복사하는 함수입니다. strcpy는 첫 번째 인자로 전달되는 문자 배열에, 두 번째 인자로 전달되는 문자 배열의 내용을 복사합니다.

#include <string.h>

char* strcpy(char* destination, const char* source);
  • destination: 복사된 문자열을 저장할 대상 문자 배열입니다.
  • source: 복사할 원본 문자열을 나타내는 문자 배열입니다.

strcpy 함수는 대상 문자 배열의 메모리 크기를 확인하지 않고 복사하기 때문에, 원본 문자열의 길이가 대상 문자 배열보다 큰 경우 메모리 오버플로우가 발생할 수 있습니다.

strcpy 함수 예제

#include <stdio.h>
#include <string.h>

int main() {
    char source[] = "Hello, World!";
    char destination[20];

    strcpy(destination, source);

    printf("복사된 문자열: %s\n", destination);

    return 0;
}

위 예제에서는 strcpy 함수를 사용하여 source 배열의 내용을 destination 배열로 복사합니다. destination 배열은 충분한 크기로 선언되어 있어야 합니다.

strncpy 함수란

strncpy 함수는 strcpy 함수와 비슷하지만, 추가 매개변수인 길이(size)를 통해 복사할 문자열의 최대 길이를 지정할 수 있습니다.

#include <string.h>

char* strncpy(char* destination, const char* source, size_t size);
  • destination: 복사된 문자열을 저장할 대상 문자 배열입니다.
  • source: 복사할 원본 문자열을 나타내는 문자 배열입니다.
  • size: 복사할 최대 문자열 길이를 나타내는 값입니다.

strncpy 함수 예제

#include <stdio.h>
#include <string.h>

int main() {
    char source[] = "Hello, World!";
    char destination[10];

    strncpy(destination, source, 5);
    destination[5] = '\0';

    printf("복사된 문자열: %s\n", destination);

    return 0;
}

위 예제에서는 strncpy 함수를 사용하여 source 배열의 내용을 destination 배열로 최대 5글자까지 복사합니다. 그 후에는 명시적으로 문자열의 끝을 나타내는 널 문자를 추가해줘야 함에 주의해야 합니다.

strcpy와 strncpy 함수의 차이점

기능 strcpy strncpy
복사범위 원본 문자열의 길이(널 문자 포함) 최대 복사 길이(널 문자 포함)
메모리 보장 X 지정한 최대 길이만큼 메모리 보장
오버플로우 가능 지정한 최대 길이 이상은 자름

마무리

이번 포스팅에서는 strcpystrncpy 함수의 사용법과 예제에 대해 알아보았습니다. strcpy 함수는 해당 배열의 크기를 확인하지 않기 때문에 주의해야 하며, strncpy 함수는 복사할 문자열의 최대 길이를 지정할 수 있어 유용합니다.

댓글