본문 바로가기

프로그래밍 언어 개념/C

[C언어] Strcpy 함수 주의할 점

[strcpy 함수의 사용 예제]

아래의 코드를 보고 결과를 예측해보자.

#include <stdio.h>

void main()
{
	char ori_arr[] = "ABCDEFG";
	char cpy_arr[] = "AAA";

	strcpy(ori_arr, cpy_arr);

	printf("%s", ori_arr);

	return 0;
}

 

[실행 결과]

AAA

 

[예측]

코드를 보면 ori_arr이 cpy_arr보다 길이가 더 긴 물자열이다.

따라서 저렇게 복사하면 "AAADEFG"이 나올 것으로 예측하기 쉽다.

 

[결론]

strcpy는 문자열의 끝('\0')까지 복사를 한다.

strcpy 함수를 통해서 ori_arr에 cpy_arr을 복사하게 되면, ori_arr은 메모리 상에서 아래와 같이 된다.

"AAA\0EFG\0"

즉, strcpy 함수를 통해서 배열의 끝인 \0까지 복사가 되었기 때문에, ori_arr의 3번째 인덱스에 '\0'이 존재하게 된다.

그러므로 ori_arr의 문자열은 "AAA\0"까지 인식하게 되어서 printf 함수를 사용하게 되면 AAA만 출력되는 것이다.


<참고>

https://blockdmask.tistory.com/348

 

[C언어/C++] strcpy, strncpy 함수(문자열 복사)에 대해서

안녕하세요. BlockDMask 입니다. 오늘은 C 스타일의 문자열인 char*, char[] 타입의 문자열을 복사하는 함수 두가지에 대해서 알아 볼 것 입니다. 두 함수는 바로 strcpy, strncpy 입니다. 이 두함수가 무슨

blockdmask.tistory.com

 

'프로그래밍 언어 개념 > C' 카테고리의 다른 글

구조체 패딩(struct padding)  (1) 2023.12.08
[C언어] 함수의 정의  (0) 2023.11.23
[C언어] static 변수  (0) 2021.12.26
[C언어] 지역변수와 전역변수  (0) 2021.12.23