strcat()와 관련된 질문입니다.
글쓴이: ratmhun / 작성시간: 일, 2003/11/30 - 1:39오후
안녕하세요. 프로그래밍 초보입니다.
A Book on C 6장 43번 문제인데요.
#include <stdio.h> #include <string.h> int main(void) { char *p1 = "abc", *p2 = "pacific sea"; printf("%s %s %s\n", p1, p2, strcat(p1, p2)); return 0; }
예상한 결과는...
abc pacific sea abcpacific sea
그런데 이렇게 나오지 않고 세그멘테이션 오류가 발생하는 군요.
무엇이 문제인지 잘 모르겠습니다.
Forums:
p1이 p2까지 담을 수 있는 충분한 공간이 있어야 되는 걸로알고
p1이 p2까지 담을 수 있는
충분한 공간이 있어야 되는 걸로
알고 있습니다...
[code:1]int main(void) {
strcat 를 쓰려면 덧붙여지는 문자열 (p1) 쪽에 충분한 공간이 있어야 합니다.
그런데 코드에서 공간을 선언하지 않고 포인터만 선언하였으므로 당연히 에러가 납니다.
이렇게 바꿔보세요.
답변 감사합니다.
관심 가져주셔서 감사드립니다. 이걸 생각 못했네요.
calloc() 혹은 malloc() 를 이용해서 p1의 크기를 잡아준 뒤에 p2를 붙이는 것도 가능하겠군요.
한글 맨페지에 보면[quote]dest문자열은 결과를 위해 충분한 공
한글 맨페지에 보면
얼마나 충분해야하는지 처음쓰는사람은 모르겠네요;;;
이렇게 쓰시면 되겠네요.
혹은
답변 감사합니다.
답변 감사드립니다.
덕분에 strcpy()에 대해서 많은 것을 알게 되었습니다.
Re: strcat()와 관련된 질문입니다.
일반적으로 아래의 코드가 컴파일 되면 "abc" 는 text 영역에 저장됩니다.
거기에 write를 할려고 했기 때문에 세그먼트폴트 난겁니다.
char p1[] = "abc", p2[] = "pacific sea";
라고 하면 예상했던 결과가 나옵니다.
screen + vim + ctags 좋아요~
[quote="김충길"]일반적으로 아래의 코드가 컴파일 되면 "abc"
p1에 충분한 공간이 할당되어 있지 않기 때문에 여전히 문제가 있는 코드입니다.
어찌나 졸린지..~~
댓글 달기