char s[6] = "Hello";
printf("%sn", s);
strcpy(s, "Good Bye");
printf("%sn", s);
위에서 strcpy를 이용해서 s라는 변수에 Hello대신에 Good Bye라는 문장을 집어넣었는데요
문제는 s라는 변수의 공간은6칸인데 새로 대입한 문장은 8칸짜리 잖아요;;
이거 오류가나야 정상 아닌가요?
근데이걸 실행시키면 제대로 Good Bye가 찍혀서 나오더라구요;;
왜그런건가요? 컴퓨터에서 자동으로 칸수를 늘려주기라도 하나요??;
strcpy라는게 기본적으로 몇칸짜리 배열인지 그런거는 관심없고 일단 포인터를 받아서 거기서부터 쭉 쓰고보는 함수라 에러가 안납니다.
만약 변수 두개를 연달아 선언해놓고, 저런 일이 벌어졌다면 뒤에 선언된 변수 내용이 희안하게 변해있는걸 목격할 수 있을겁니다
저기서 에러가 안 나주기 때문에, strncpy를 사용합니다. strncpy는 몇글자 제한 두고 카피하기 때문에 저런 문제가 일어나지 않습니다