const/literal 문자열을 붙이려면 어떻게 해야될까요?


소스코드

message = strcat("TEXT " , var);

message2 = strcat(strcat("TEXT ", foo), strcat(" TEXT ", bar));

발생하는 문제 및 실행환경

고정 문자열 뒤에 문자열을 붙이려고 하니까 실행하면 자꾸 Segmentation Fault라고 뜹니다.

const/literal 문자열을 붙이려면 어떻게 해야될까요?

  • 2016년 02월 04일에 작성됨

조회수 186


1 답변


좋아요
0
싫어요
채택취소하기
message = strcat("TEXT " , var);

의 의도는 ("TEXT " + var)을 하고, 그 주소를 message에 저장하는 것인가요?

strcat의 원형은 char * strcat ( char * destination, const char * source );이고, destinationchar 배열 buffer여야 합니다.

근데 "TEXT "같은 문자열은 plain char array(한국어로 적당히 표현할 수 없군요..)이기 때문에 일종의 상수라서 이 뒤에 다른 문자열을 붙일 수 없습니다.

이 의도로 코드를 짜려면

char myTEXT[] = "TEXT ";
message = strcat(myTEXT, var);

같은 식으로 "TEXT "를 별도 write가능한 메모리 공간에 저장해줘야 합니다.

  • 2016년 02월 04일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close