#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" );
뭐 이렇게 해도 됩니다.
|