关于结构体指针数数组(动态分配空间的问题)
就是创建一个图书馆的问题//刚学C不久,🐟C视频课后答案没更新了,
我想问:
①创建一个结构体指针,后面给结构体分配空间比如 struct Book *book ;book=(struct Book*)malloc(n*sizeof(struct Book))定义一个指针开辟n个空间 与创建十个指针开辟一个空间是一样的吗?
②结构体动态分配空间,这方面感觉好混乱的感觉。
③请求帮助,就是带你学C带你飞中的,创建图书馆的问题,🐟友大佬们,帮帮,卡在这,不知道代码怎么写下去了,
#include<stdio.h>
#include<stdlib.h>
struct Data
{
int year;
int month;
int day;
};
struct Book
{
char name;
char publisher;
char author;
float price;
struct Data data;
};
int main()
{
int n;
int i;
printf("请输入要存入图书的数量:");
scanf("%d",&n);
struct Book *ptr;
ptr=(struct Book *)malloc(n*sizeof(struct Book));
struct Book *book;
//int length=(sizeof(book)/sizeof);
for(i=0;i<n;i++)
{
printf("请输入书名:");
scanf("%s",ptr->name);
printf("请输入出版社:");
scanf("%s",ptr->publisher);
printf("请输入价格:");
scanf("%f",&ptr->price);
printf("请输入作者:");
scanf("%s",ptr->author);
printf("请输入发行日期:");
scanf("%d-%d-%d",&ptr->data.year,&ptr->data.month,&ptr->data.day);
}
for(i=0;i<n;i++)
{
book=&ptr;
}
printf("welcome to 龙大大的图书馆\n");
printf("龙大大目前的图书为:\n");
for(i=0;i<n;i++)
{
printf("书名:");
printf("%s",ptr->name);
putchar('\n');
printf("出版社:");
printf("%s",book->publisher);
putchar('\n');
printf("作者:");
printf("%s",book->author);
putchar('\n');
printf("发行日期:");
printf("%d-%d-%d",book->data.year,book->data.month,book->data.day);
putchar('\n');
printf("价格:");
printf("%.1f",book->price);
putchar('\n');
}
return 0;
} 1.你的ptr就已经可以遍历到所有结构体了,没要再定义一个book指针
2.第一个for 循环你的ptr一直停留在原地,你应该让ptr每次向后移动
建议:你可以将输入输出功能封装成函数,可以让你的代码看起来更舒服,有条理一些
页:
[1]