whazzulookinat   2년 전

저는 기본적으로 구조체 배열을 사용했고, 각 배열마다 해당하는 문자열을 가리키는 ptr를 정의하였습니다. 그런데 각 배열에 문자열을 넣을때마다 이전 문자열들이 모두 방금 넣은 문자열로 갱신이 돼서, 결국 모든 문자열이 맨 마지막으로 입력한 문자열로 통일되어버립니다.. 혹시 tmp와 tmp2를 insert할때마다 정의해줘도, 같은 값이라서 다 바뀌게 되는 건가요..?

djm03178   2년 전

33번째 줄의 tmp->string = words; 는 words가 가지고 있는 문자열을 복사해서 string이 가리키는 위치에 넣어주는 것이 아니라, string이 가리키는 위치를 words가 가리키는 위치 (즉, 전역 변수 words)로 바꾸어주는 연산입니다. 31번째 줄에서 할당받은 공간은 어딘지 영영 잊어버리게 되는 거고요. 그래서 그 후에 words의 내용물이 바뀌면 당연히 모든 string이 가리키는 내용물도 바뀝니다. 문자열은 strcpy 등의 함수로 복사해줘야 합니다.

댓글을 작성하려면 로그인해야 합니다.