Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[4608] Re:구조체에서 세그멘트폴트..??
김시환 [godson2] 1344 읽음    2004-08-06 14:01
#include <stdio.h>
#define HOME "/work/src/test"
#define ST "stoder"

int test(void) ;

int main(int argc, char* argv[])
{
    test();
    return 0;
}
//---------------------------------------------------------------------------


int test()
{
    char path[100];

typedef struct _TEST_ST{
    char item[7];
    char item_name[13];
    double price ;
    double recprice ;
} TEST_ST;

   TEST_ST data ;

    memset(path, 0x00, sizeof(path));
    sprintf(path, "%s/%s", HOME, ST);

    sprintf(data.item, "%s", "123456"  );
    sprintf(data.item_name, "%s", "세계전자");
    data.price      = 12345.0;
    data.recprice   = 12300.0;

    printf("data.item : [%s]\n",data.item);
    printf("data.item_name : [%s]\n",data.item_name);
    printf("data.price      : [%f]\n",data.price     );
    printf("data.recprice   : [%f]\n",data.recprice  );

return 1;
}

구조체의 선언을 포인터로 하게되면 구조체 내의 메모리들의 공간할당이
되지 않습니다. 포인터의 의미를 잘 이해하신 다면 쉬울텐데
포인터는 특정한 형의 주소번지를 저장하기위한 변수입니다.
따라서 구조체의 포인터는 선언한 구조체의 형에 대한 주소번지만을 저장하게 되어
있으므로 내부의 변수에 대한 메모리 할당을 하지 않는 것입니다.

TEST_ST   temp ;
TEST_ST *data ;

data = &temp ;
sprintf(data->item, "%s", "123456"  );

뭐 이렇게 해도 됩니다.

+ -

관련 글 리스트
4606 구조체에서 세그멘트폴트..?? 선녀 1293 2004/08/06
4636     Re:구조체에서 세그멘트폴트..?? 키키덕 1268 2004/09/13
4608     Re:구조체에서 세그멘트폴트..?? 김시환 1344 2004/08/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.