В теле main() я создаю переменную-указатель на структуру, которая передается в функцию, где вводится количество элементов массива и создается массив. При попытке ввода поля в первый элемент массива программа вылетает. Где у меня ошибка, и возможно ли вообще так создать этот массив?
struct publisher{
int year;
char name[maxL], city[maxL];
};
struct book{
publisher pubhouse;
char name[maxL], auth[maxL];
int price, page_n;
};
void input (book *books, int *n){
int i;
printf("Введите количество книг: ");
scanf("%d", n);
books = new book[*n];
printf ("\nВведите данные о книгах:");
for (i = 0; i < *n; i++){
printf("\nКнига #%d\n", i + 1);
printf("Введите название книги: ");
scanf("%s", *books[i].name);
printf("\nВведите имя автора: ");
gets(books[i].auth);
printf("\nВведите цену книги: ");
scanf("%d", books[i].price);
printf("\nВведите количество страниц: ");
scanf("%d", books[i].page_n);
printf("Введите имя издательства: ");
gets(books[i].pubhouse.name);
printf("Введите имя города: ");
gets(books[i].pubhouse.city);
printf("\nВведите год издания: ");
scanf("%d", books[i].pubhouse.year);
}
}
int main()
{
setlocale(LC_ALL, "RUS");
int i, j, n, k;
book *books;
input(books, &n);
delete [] books;
return 0;
}