C언어 문자열 복사 [strcpy()]
함수 strcpy()는 전체 문자열을 다른 메모리 영역으로 복사합니다.
strcpy()를 사용할 때에는 복사할 문자열을 저장하기 위한 영역을 할당해야 합니다. 이 함수는 새로 복사할 공간이 이미 할당 되어 있는 영역인지 알 수 없습니다. 만약 메모리 영역이 할당되지 않았다면 함수는 새로 복사할 공간부터 시작하여 strlen(source)만큼의 메모리 영역을 덮어쓸 것입니다.
이것은 예상할 수 없는 문제를 일으킵니다.
#include <stdio.h> char name[80]; main() printf("문장을 입력해주세요 : "); strcpy(anew, name); //anew에 name의 내용을 복사합니다. anew2 = (char *)malloc(strlen(name)+1); //malloc 함수를 이용해 공간을 할당하였습니다. strcpy(anew3,name); //공간을 할당하지 않고 바로 복사를 시도합니다. |
anew2까지만 복사되고 anew3에선 복사가 되지 않아 위와 같은 오류가 발생하였습니다. 내용을 읽어보면 anew3에서 공간을 할당하지 않아 오류가 발생했다고 나오네요.