|
전승호 님이 쓰신 글 :
:
: 책에서 문제를 풀어보던 도중에 믿과같은 예문을 보았습니다.
: 그러나 책에는 분명 실행이 된다고 했는데 제가생각해도 좀
: 이상해서 이렇게 질문을 드립니다.
: 물론 직접 실행한 결과도 좀 이상하더군요.
: 제생각엔 믿의 예문이 실행되려면......
: myptrs.p2=(char *)malloc(strlen("I Can Do It")+1);
: 이 추가되어야 할것 같은데......
: 꼭좀 뭐자 잘못된것이고 어떻게 고쳐야 하는지 꼭좀 가르쳐
: 주세요.
:
:
:
: #include <stdio.h>
: #include <string.h>
: #include <stdlib.h>
:
: struct msg {
: char p1[30];
: char *p2;
: } myptrs;
:
: void main()
: {
: strcpy(myptrs.p1,"hello world");
: strcpy(myptrs.p2,"I Can Do It");
: puts(myptrs.p1);
: puts(myptrs.p2);
: }
:
:
안녕하십니까?
한꼬맹이 입니다.
char *strcpy(char *dest, const char *src)
strcpy 수에서 첫번째 인자의 주소는 실제로 메모리에 존재해야 합니다.
즉 myptrs.p2는 주소만 저장할수 있는 곳이지 데이타를 저장하는 곳이 아니니까요?
다음과 같이 고쳐보세요...
void main()
{
strcpy(myptrs.p1,"hello world");
myptrs.p2 = (char *)malloc(strlen("I Can Do It")+1);
strcpy(myptrs.p2,"I Can Do It");
puts(myptrs.p1);
puts(myptrs.p2);
}
|