gpt4 book ai didi

c - 从函数传递和返回结构体

转载 作者:行者123 更新时间:2023-11-30 20:21:18 26 4
gpt4 key购买 nike

我有一个带有书籍结构数组的函数,但是当我尝试将其返回到我的主函数时,它不会返回值并将它们存储在数组中。如果 addBook 函数必须为空,我将如何解决这个问题,以便稍后可以访问数组元素。

void addBook(struct Book book[], int *size) {

if (*size == MAX_BOOKS) {
printf("The inventory is full\n");

}
else {

printf("ISBN:");
scanf("%d", &book[*size]._isbn);
printf("Title:");
scanf("%s", book[*size]._title);
getchar();
printf("Year:");
scanf("%d", &book[*size]._year);
printf("Price:");
scanf("%f", &book[*size]._price);
printf("Quantity:");
scanf("%d", &book[*size]._qty);
*size++;
printf("The book is successfully added to the inventory.\n");
}
return book;
}

int main(void) {

struct Book book[MAX_BOOKS];
int size = 0;
int i;
int option;


printf("Welcome to the Book Store\n");
printf("=========================\n");

do {
menu();
printf("Select: ");
scanf("%d", &option);

switch (option) {

case 0:
printf("Goodbye!\n");
break;
case 1:
displayInventory(book, size);
break;
case 2:
addBook(book, &size);
break;
case 3:
//checkPrice();
break;
default:
printf("Invalid input, try again:\n");
}
} while (option != 0);
}

最佳答案

您的 return 语句不会执行您想要的操作,因为 addBook 的函数签名表示它返回 void。令我惊讶的是,代码实际上编译时没有出现任何错误。

无论如何,书籍数据可以通过与传入相同的方式返回 - 作为输入和输出参数。

本质上,您的代码可能如下所示(这只是一个代码示例,该代码可以编译并用于将从标准输入输入的信息保存到书中):

#include <stdio.h>

struct Book {
int value;
};

#define MAX_BOOKS 2

void addBook(struct Book book[], int *size) {
if (*size == MAX_BOOKS) {
printf("The inventory is full\n");
}
else {
printf("Value:");
scanf("%d", &book[*size].value);
(*size)++;
printf("The book is successfully added to the inventory.\n");
}
}

int main(void) {
struct Book book[MAX_BOOKS];
int size = 0;

addBook(book, &size);
printf("Book 1: Value=%d\n", book[0].value);
}

这是运行时的样子:

$ ./main
Value:9
The book is successfully added to the inventory.
Book 1: Value=9

希望这能回答您的问题。

关于c - 从函数传递和返回结构体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43101336/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com