C 언어는 문자열을 다루는 데에 많은 함수를 제공합니다. 그 중 strcpy와 strncpy 함수는 문자열을 복사하는 데에 사용되는 함수입니다. strcpy와 strncpy 함수의 사용 방법과 예제에 대해 알아보겠습니다.
strcpy 함수
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 배열로 복사합니다. 따라서 "Hello, world!" 문자열이 복사된 후에는 destination 배열에 저장되어 있습니다. 프로그램을 실행하면 "복사된 문자열: Hello, world!"가 출력됩니다.
strcpy 함수의 형식은 다음과 같습니다.
char* strcpy(char* destination, const char* source);
첫 번째 인수인 destination은 복사된 문자열이 저장될 배열을 가리키는 포인터입니다. 두 번째 인수인 source는 복사할 문자열을 가리키는 포인터입니다. strcpy 함수는 복사된 문자열의 첫 번째 문자를 가리키는 포인터를 반환합니다.
strncpy 함수
strncpy 함수는 strcpy와 유사하게 동작하지만, 복사할 문자열의 길이를 명시적으로 지정할 수 있습니다. 다음은 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 배열의 처음 5개 문자를 destination 배열로 복사합니다. 그러나 destination 배열의 크기가 충분하지 않기 때문에 복사된 문자열의 끝을 나타내는 널 문자를 직접 추가해야 합니다. 따라서 destination 배열에는 "Hello"가 저장되고, 프로그램을 실행하면 "복사된 문자열: Hello"가 출력됩니다.
strncpy 함수의 형식은 다음과 같습니다.
char* strncpy(char* destination, const char* source, size_t num);
첫 번째 인수인 destination은 복사된 문자열이 저장될 배열을 가리키는 포인터입니다. 두 번째 인수인 source는 복사할 문자열을 가리키는 포인터입니다. 세 번째 인수인 num은 복사할 최대 문자 개수를 지정합니다. strncpy 함수는 복사된 문자열의 첫 번째 문자를 가리키는 포인터를 반환합니다.
주의 사항
strcpy와 strncpy 함수를 사용할 때 주의해야 할 사항이 있습니다.
널 종료 문자를 처리해야 합니다: strcpy와 strncpy 함수는 복사된 문자열의 끝에 널 종료 문자를 추가하지 않습니다. 따라서 복사된 문자열을 사용하기 전에 반드시 널 종료 문자를 추가해야 합니다.
버퍼 오버플로우를 방지해야 합니다: strncpy 함수는 복사할 문자 개수를 지정할 수 있습니다. 그러나 목표 배열의 크기를 초과하는 문자를 복사하려는 경우, 널 종료 문자가 자동으로 추가되지 않을 수 있으며 버퍼 오버플로우가 발생할 수 있습니다. 이를 방지하기 위해 목표 배열의 크기를 충분히 지정하거나 널 종료 문자를 명시적으로 추가해야 합니다.
결론
C 언어에서의 strcpy와 strncpy 함수는 문자열을 복사하는 데에 사용되는 함수입니다. strcpy 함수는 한 문자열을 다른 문자열로 복사할 때 사용되며, strncpy 함수는 지정된 문자 개수만큼 문자열을 복사할 때 사용됩니다. 문자열을 복사할 때는 널 종료 문자를 처리하고 버퍼 오버플로우를 방지해야 합니다.
'IT > c언어' 카테고리의 다른 글
C 언어 strcmp strncmp 함수 (0) | 2023.07.18 |
---|---|
C 언어 strcat strncat 함수 (0) | 2023.07.18 |
C 언어 strlen 함수 (0) | 2023.07.17 |
C 언어 fflush 함수 (0) | 2023.07.17 |
C 언어 gets fgets (0) | 2023.07.17 |
댓글