본문 바로가기
IT/c언어

C 언어 strcpy strncpy 함수

by 뉴코딩맨 2023. 7. 17.
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

댓글