POST

C언어 문자열 복사하기(strcpy, strncpy)

문자열 복사하기


string헤더 파일에 존재하는 strcpy, strncpy 라이브러리 함수를 이용하여 문자열을 복사하여 보자.


#include<string.h> - 해석하면 " string헤더파일을 포함한다"라고할 수 있다.


strcpy의 사용 방법은 아래와 같다.

strcpy(복사 받는 문자열, 복사할 문자열);


ex)

#include<stdio.h>

#include<string.h>


int main(void) {

char str1[10]="12345";

char str2[10];


strcpy(str2, str1); // str1의 내용을 str2로 복사

printf("문자열 길이: %d 문자열 내용:%s \n",strlen(str2), str2);

return 0;

}






strncpy의 사용방법은 아래와 같다.

strncpy(복사 받는 문자열, 복사할 문자열, 복사 받는 문자열의 길이)


#include<stdio.h>

#include<string.h>


int main(void) {

char str1[10]="12345";

char str2[3];


strncpy(str2, str1,sizeof(str2));// str1의 내용을 str2길이만큼 str2로 복사


printf("문자열 길이: %d \n",strlen(str2));

puts(str2);

strncpy(str2, str1, sizeof(str2) - 1);// str1의 내용을 str2길이 보다 1작게 str2로 복사

str2[sizeof(str2) - 1] = 0; // 문자열의 마지막을 0(NULL)문자 삽입


printf("문자열 길이: %d \n", strlen(str2));

puts(str2);


return 0;

}



위의 결과를 보면  알겠지만 첫번째 출력에서 배열의 길이를 그대로 적용을 할 경우 제대로 출력이 이루어 지지않는다.

그 이유는 문자열의 끝을 알려주는 NULL(0)값이 없기 때문이다.

그래서 원래 배열의 길이보다 1작게 적용후 마지막 자리를 0(NULL)로 채우는 것이다.