void borrow_book(int id) { int i,j; if(!login_menu()) { printf("查找失败!不存在用户信息!\n"); printf("请先登录后再使用!\n"); } printf("现在的库存有:\n"); for(i=0;i<MAX_BOOKS;i++) { printf("%d.%s\n",book2[i].id,book2[i].name);//打印初始书单 } printf("请输入您要借的书籍序号:"); scanf("%d",id); for(i=0;i<MAX_BOOKS;i++) { if(book2[i].id==id) { if(book2[i].borrowed==0) { book2[i].borrowed=1; printf("借书成功!\n"); for(j=i;j<MAX_BOOKS-1;j++) { book2[j].id=book2[j+1].id; strcpy(book2[j].name,book2[j+1].name); book2[j].borrowed = book2[j+1].borrowed; } strcpy(book2[MAX_BOOKS-1].name,""); book2[MAX_BOOKS-1].id=0; book2[MAX_BOOKS-1].borrowed=0; } else { printf("该书已经被借出!\n"); } } } for(i=0;i<MAX_BOOKS;i++) { printf("%d.%s\n",book2[i].id,book2[i].name);//打印借完书后的新书单 } }怎么修改这段代码
时间: 2024-04-01 15:33:20 浏览: 68
book_borrow_system.zip_Book 2_book borrow_book_borrow system_图书借
这段代码存在一个问题,即在调用 scanf 函数时应该传入 id 的地址而非值,因为需要将用户输入的值存储到变量 id 中。以下是修改后的代码:
void borrow_book(int id) {
int i,j;
if(!login_menu()) {
printf("查找失败!不存在用户信息!\n");
printf("请先登录后再使用!\n");
return; // 退出函数
}
printf("现在的库存有:\n");
for(i=0;i<MAX_BOOKS;i++) {
printf("%d.%s\n",book2[i].id,book2[i].name);//打印初始书单
}
printf("请输入您要借的书籍序号:");
scanf("%d",&id); // 传入 id 的地址
for(i=0;i<MAX_BOOKS;i++) {
if(book2[i].id==id) {
if(book2[i].borrowed==0) {
book2[i].borrowed=1;
printf("借书成功!\n");
for(j=i;j<MAX_BOOKS-1;j++) {
book2[j].id=book2[j+1].id;
strcpy(book2[j].name,book2[j+1].name);
book2[j].borrowed = book2[j+1].borrowed;
}
strcpy(book2[MAX_BOOKS-1].name,"");
book2[MAX_BOOKS-1].id=0;
book2[MAX_BOOKS-1].borrowed=0;
}
else {
printf("该书已经被借出!\n");
}
}
}
for(i=0;i<MAX_BOOKS;i++) {
printf("%d.%s\n",book2[i].id,book2[i].name);//打印借完书后的新书单
}
}
需要注意的是,该函数可能存在其他的问题,比如 login_menu 函数的实现未知,可能会导致函数执行失败。
阅读全文