본문 바로가기
언어/C언어

[c언어] strcpy 함수

by 코딩히어로 2023. 10. 30.
728x90

strcpy 함수는 문자열을 다른 문자열로 복사하는 데 사용되며, 많은 C 프로그래머가 일상적으로 사용하는 중요한 함수 중 하나입니다.

 

char* strcpy(char* destination, const char* source);

 

  • destination: 복사한 문자열이 저장될 대상 문자열의 포인터입니다.
  • source: 복사할 문자열의 포인터로, const 키워드를 사용하여 수정되지 않는 문자열을 가리킵니다.
  • strcpy 함수는 destination로 지정된 메모리에 source로 지정된 문자열을 복사합니다. 이때, destination의 메모리 공간은 충분히 커야 합니다.

 

함수 활용법

 

#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로 복사되었습니다.

주의사항


source 문자열의 길이가 destination에 할당된 메모리보다 크면 버퍼 오버플로우가 발생할 수 있으므로, 메모리 할당에 주의해야 합니다.
문자열 끝을 나타내는 null 종결 문자('\0')가 복사되지 않는다면 문자열의 끝이 알 수 없게 될 수 있습니다. 이 경우, strncpy 함수를 사용하여 복사 문자열의 최대 길이를 지정하는 것이 더 안전할 수 있습니다.

 

 

문자열 길이 제한하기

 

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

int main() {
    char source[] = "This is a very long string that should not be completely copied.";
    char destination[20]; // 충분한 공간을 할당해야 합니다.

    strncpy(destination, source, sizeof(destination) - 1);
    destination[sizeof(destination) - 1] = '\0'; // null 종결 문자 추가

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

 

이 예제에서는 strncpy 함수를 사용하여 destination에 최대 길이 제한을 두고 문자열을 복사했습니다. 또한 null 종결 문자를 수동으로 추가하여 문자열의 끝을 나타냈습니다.

 

 

문자열 동적 할당

 

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

int main() {
    const char* source = "Dynamic Memory Allocation";
    char* destination = (char*)malloc(strlen(source) + 1);

    if (destination) {
        strcpy(destination, source);
        printf("복사된 문자열: %s\n", destination);
        free(destination); // 메모리 해제
    }
    else {
        printf("메모리 할당 실패!\n");
    }
    
    return 0;
}

 

이 예제에서는 malloc 함수를 사용하여 destination에 동적으로 메모리를 할당하고, 이후에 strcpy 함수로 문자열을 복사합니다. 필요한 경우 반드시 메모리를 해제해야 합니다.

 

strcpy 함수는 C 언어에서 문자열 복사 작업을 수행하는 중요한 도구 중 하나입니다. 

그러나 주의를 기울여야 할 점이 있으므로 메모리 할당과 버퍼 오버플로우에 대해 신중하게 고려해야 합니다. 

필요한 경우 strncpy 함수 또는 동적 메모리 할당을 활용하여 안전하게 문자열을 복사할 수 있습니다.

728x90
반응형

'언어 > C언어' 카테고리의 다른 글

[c언어] qsort 함수란?  (1) 2023.10.30
[C언어] malloc 함수란?  (0) 2023.10.30
[c언어] 멀티스레딩과 병렬 프로그래밍  (0) 2023.10.28
[C언어] strstr 함수 사용  (2) 2023.10.27
[C언어] memcpy 함수 사용법  (0) 2023.10.27

댓글