프로그래밍 언어 개념/C
[C언어] Strcpy 함수 주의할 점
powerdeng
2022. 10. 4. 15:53
[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