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 함수 또는 동적 메모리 할당을 활용하여 안전하게 문자열을 복사할 수 있습니다.
'언어 > 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 |
댓글