此代码应阅读图书信息,然后打印信息,但我在函数中遇到错误void in_book(struct books z)
,void out_book(struct books z)
#include <stdio.h>
struct books{
int id;
float price;
char title[15];
char description[140];
};
void in_book(struct books z){
printf("Enter the title\n");
gets(z.title);
printf("Enter the description\n");
gets(z.description);
printf("Enter the id\n");
scanf("%d",&z.id);
printf("Enter the price\n");
scanf("%f",&z.price);
}
void out_book(struct books z){
printf("Title : %s\n",z.title);
printf("Description : %s\n",z.description);
printf("Id : %d\n",z.id);
printf("Price : %.1f\n",z.price);
}
void main(){
struct books b1;
in_book(b1);
out_book(b1);
}
这是输出
输入标题
书
输入说明
一本书 输入ID
1234
输入价格
55
标题:
说明:
Id:0
价格:0.0
答案 0 :(得分:1)
您正在以按值调用方式分配结构的每个字段的值,这意味着更改仅在每个函数中可见。如果要设置值以使main函数中的struct保存所有更改,则需要指向结构的指针:
struct books *b1 = malloc(sizeof(struct books));
然后传过指针:
in_book(b1);
out_book(b1);
修改功能如下:
void in_book(struct books *z){
printf("Enter the title\n");
gets(z->title);
printf("Enter the description\n");
gets(z->description);
printf("Enter the id\n");
scanf("%d",&z->id);
printf("Enter the price\n");
scanf("%f",&z->price);
}
void out_book(struct books *z){
printf("Title : %s\n",z->title);
printf("Description : %s\n",z->description);
printf("Id : %d\n",z->id);
printf("Price : %.1f\n",z->price);
}
修改强>
此外,您应该查看主题&#34; 按值调用&#34;以及&#34; 按引用拨打&#34;。
答案 1 :(得分:-1)
你需要创造menmory
struct books *b1 = malloc(sizeof(struct books))