void addbook(Book bookList) { printf("请输入书名:"); scanf("%s", bookList[numbooks].name); printf("请输入作者:"); scanf("%s", bookList[numbooks].author); printf("请输入出版社名:"); scanf("%s", bookList[numbooks].press); bookList[numbooks].available = 1; numbooks++; printf("添加成功!\n"); }怎么改正
时间: 2024-03-25 21:36:07 浏览: 57
JavaWeb连接数据库(Dao模式),实现添加book并按日期范围查找相应book信息
在这个函数中,传递的参数 `bookList` 是一个结构体类型的变量,而不是一个指向结构体的指针。这意味着在函数中对 `bookList` 的修改只会影响到函数内部的副本,而不会影响到原始的结构体变量,因此需要将参数改为指向结构体的指针。
修改后的代码如下:
```
void addbook(Book *bookList, int *numbooks) {
printf("请输入书名:");
scanf("%s", bookList[*numbooks].name);
printf("请输入作者:");
scanf("%s", bookList[*numbooks].author);
printf("请输入出版社名:");
scanf("%s", bookList[*numbooks].press);
bookList[*numbooks].available = 1;
(*numbooks)++;
printf("添加成功!\n");
}
```
在这个修改后的函数中,我们将 `bookList` 参数改为了指向结构体的指针,同时增加了一个 `numbooks` 参数,表示当前已经添加的书籍数目。在函数内部,我们使用指针操作来修改结构体变量,并使用 `*numbooks` 来表示当前书籍数目。最后,我们需要使用 `(*numbooks)` 将指针解引用,以便在增加书籍之后更新书籍数目的值。
阅读全文