结构体指针
#include <stdio.h>struct Date
{
int year;
int month;
int day;
};
struct Book
{
char name;
char author;
float price;
struct Date date;
};//书籍结构体
void getbook(struct Book *);
void printbook(struct Book *);
void getbook(struct Book *book)
{
printf("请输入书名:\n");
scanf("%s",book->name);
printf("请输入作者:\n");
scanf("%s",book->author);
printf("请输入价格:\n");
scanf("%f",&book->price);
printf("请输入日期:\n");
scanf("%d-%d-%d",&book->date.year,&book->date.month,&book->date.day);
}//输入书籍信息
void printbook(struct Book *book)
{
printf("书名为:%s\n",book->name);
printf("作者为:%s\n",book->author);
printf("价格为:%f\n",book->price);
printf("日期为:%d-%d-%d\n",book->date.year,book->date.month,book->date.day);
}//输出书籍信息
int main()
{
struct Book *pb;
getbook(pb);
printbook(pb);
return 0;
}
为什么无法正常运行?谢谢大佬。
没有空间啊,你输入这些东西没地方放啊 wp231957 发表于 2021-5-29 21:50
没有空间啊,你输入这些东西没地方放啊
没懂。要怎么改? Zzq233 发表于 2021-5-29 22:08
没懂。要怎么改?
改法一
#include <stdio.h>
#include <stdlib.h>
struct Date
{
int year;
int month;
int day;
};
struct Book
{
char name;
char author;
float price;
struct Date date;
};//书籍结构体
void getbook(struct Book *);
void printbook(struct Book *);
void getbook(struct Book *book)
{
printf("请输入书名:\n");
scanf("%s",book->name);
printf("请输入作者:\n");
scanf("%s",book->author);
printf("请输入价格:\n");
scanf("%f",&book->price);
printf("请输入日期:\n");
scanf("%d-%d-%d",&book->date.year,&book->date.month,&book->date.day);
}//输入书籍信息
void printbook(struct Book *book)
{
printf("书名为:%s\n",book->name);
printf("作者为:%s\n",book->author);
printf("价格为:%f\n",book->price);
printf("日期为:%d-%d-%d\n",book->date.year,book->date.month,book->date.day);
}//输出书籍信息
int main()
{
struct Book *pb = malloc(sizeof(*pb));
getbook(pb);
printbook(pb);
free(pb);
return 0;
}
改法二
#include <stdio.h>
#include <stdlib.h>
struct Date
{
int year;
int month;
int day;
};
struct Book
{
char name;
char author;
float price;
struct Date date;
};//书籍结构体
void getbook(struct Book *);
void printbook(struct Book *);
void getbook(struct Book *book)
{
printf("请输入书名:\n");
scanf("%s",book->name);
printf("请输入作者:\n");
scanf("%s",book->author);
printf("请输入价格:\n");
scanf("%f",&book->price);
printf("请输入日期:\n");
scanf("%d-%d-%d",&book->date.year,&book->date.month,&book->date.day);
}//输入书籍信息
void printbook(struct Book *book)
{
printf("书名为:%s\n",book->name);
printf("作者为:%s\n",book->author);
printf("价格为:%f\n",book->price);
printf("日期为:%d-%d-%d\n",book->date.year,book->date.month,book->date.day);
}//输出书籍信息
int main()
{
struct Book pb;
getbook(&pb);
printbook(&pb);
return 0;
}
struct Book *pb;
指针没初始化啊
要申请空间 用malloc,返回一个指针 赋值给pb
然后指针才能指向开辟的空间 ,才能存数据
https://fishc.com.cn/forum.php?mod=viewthread&tid=78842&extra=page%3D1%26filter%3Dtypeid%26typeid%3D583 谢谢大佬们。
页:
[1]