strcpy와 포인터관련 질문
둘삥
질문 제목 : 문자열복사과 포인터에 관한 부분질문strcpy(str1,str2);와 str1=str2; 의 차이 질문;질문 내용 : 음...
프로그램 만드는중에 궁금한게 생겼는데;;
char * str1=(char*)malloc(30);
char * str2=(char*)malloc(30);
memset(str1, 0 , 30);
gets(str2);
strcpy(str1,str2); 이런식으로하면 복사가 제대로 되고;
str1=str2;이러면 복사가 제대로 안되는것같네요;;
둘의 차이가뭐죠???;;
-
큰깃
#includestdio.h
#includestdlib.h
#includestring.h
int main (void)
{
\tchar *str1=(char*)malloc(30);
\tchar *str2=(char*)malloc(30);
\tfputs(\str2입력: \ -
큰말
그림그려봤는데 잘못그린건지 잘 이해가 안되네요;;
str1=str2 할때 str1이 배열로 선언한게아니라
str1=(char*)malloc(30);
이렇게 하면
str1=str2도 되야되는거 아닌가요?? 어디가 잘못된거죠??;;; -
개럭시
Kgh 님의 덧글을 그냥 무시하세요.
문자열의 복사는 항상 strcpy 함수를 사용해야 됩니다. -
부루
무슨소리죠??;
-
상큼한캔디
str1=*str2해보세요
-
똥덩어리
그림 그려봤는데 이해가 잘 안되네요;;
str1에 str2가 가리키던 배열의 주소가 대입되니까
puts(str1);
하면 puts(str2);와 같아지는거아닌가요???;;; -
큰말
배열이름 혹은 포인터이름은 주소값을 가지고있으니 주소값을 복사하는거죠.
strcpy는 각 문자를 전부 복사시켜줍니다.
보통 문자열 복사하면 모든 문자복사를 하는것을 생각하지 가르키고있는 주소를 복사하는것을 생각치않죠