구조체 포인터배열 질문 다시한번 드릴게요
여름
#includestdio.h
#includeString.h
#includemalloc.h
typedef struct city{
char writer[30];
char title[30];
int page;
}city;
int main(void)
{
struct city city;
struct city *city_arr[3];
int i;
printf(도시 정보 입력\n);
for(i=0; i3; i++)
{
printf(저자 : );
scanf(%s, city.writer);
printf(제목 : );
scanf(%s, city.title);
fflush(stdin);
printf(페이지 수 : );
scanf(%d, &city.page);
city_arr[i] = strdup(city.writer);
city_arr[i] = strdup(city.title);
city_arr[i]-page=city.page;
}
printf(도시 정보 출력\n);
for(i=0; i3; i++)
{
printf(book : %d\n, i+1);
printf(저자 : %s\n, city_arr[i]-writer);
printf(제목 : %s\n, city_arr[i]-title);
printf(페이지 수 : %d\n, city_arr[i]-page);
}
return 0;
}
strdup 을 이용해서 햇는데요
city_arr[i]-writer = strdup(city.writer);
city_arr[i]-title = strdup(city.title);
이런식으로 써도 이상하게 나오고 ;;
city_Arr[i]= city; 이런식으로 할당해도 안되고 흑흑;;
도움좀 부탁드려요
-
FaintTears
아 감사합니다 malloc는 strdup쓰면 비워줘야한다고해서 free쓸려고햇는데 안썻엇네여;
-
도도
우왕 수다님짱 이제 해결햇네요 하아;
-
츠키코
malloc 함수를 쓰지도 않을 거면서
#includemalloc.h
이건 왜 했는데요? -
가람
struct city *city_arr[3];
이것은
struct city *city_arr[0];
struct city *city_arr[1];
struct city *city_arr[2];
이렇게 구조체 포인터가 3개가 있는 것입니다. 각각은 4바이트이고 합이 12바이트입니다.
여기에는 char title[30]이나 int page이 들어있는 것이 아닙니다.
city_arr[0] = (struct city *)malloc(sizeof(struct c