用strcpy函数实现借书前后书单的变化
时间: 2023-07-28 08:48:36 浏览: 106
好的,为了实现借书前后书单的变化,我们可以使用 `strcpy` 函数来复制字符串,并将借出的书从书单中删除。示例代码如下:
```c
#include <stdio.h>
#include <string.h>
#define MAX_BOOKS 5
// 定义书籍结构体
struct Book {
char title[50];
int id;
int borrowed;
};
// 初始化书籍数组
struct Book books[MAX_BOOKS] = {
{"唐诗三百首", 1, 0},
{"三体", 2, 0},
{"稻草人", 3, 0},
{"老人与海", 4, 0},
{"c语言", 5, 0},
};
// 打印书单
void print_book_list() {
printf("书单\n");
for (int i = 0; i < MAX_BOOKS; i++) {
printf("%d,%s\n", books[i].id, books[i].title);
}
}
// 借书
void borrow_book(int book_id) {
for (int i = 0; i < MAX_BOOKS; i++) {
if (books[i].id == book_id) {
if (books[i].borrowed == 0) {
books[i].borrowed = 1;
printf("借书成功,书名:%s\n", books[i].title);
// 使用strcpy函数将后面的书名往前挪一个
for (int j = i; j < MAX_BOOKS - 1; j++) {
strcpy(books[j].title, books[j + 1].title);
books[j].id = books[j + 1].id;
books[j].borrowed = books[j + 1].borrowed;
}
// 将最后一个元素清空
strcpy(books[MAX_BOOKS - 1].title, "");
books[MAX_BOOKS - 1].id = 0;
books[MAX_BOOKS - 1].borrowed = 0;
} else {
printf("该书已被借出\n");
}
break;
}
}
}
int main() {
// 打印书单
print_book_list();
// 借书
borrow_book(1);
borrow_book(3);
// 打印新书单
printf("新书单\n");
for (int i = 0; i < MAX_BOOKS; i++) {
if (books[i].borrowed == 0) {
printf("%d,%s\n", books[i].id, books[i].title);
}
}
return 0;
}
```
在 `borrow_book` 函数中,我们首先使用 `strcpy` 函数将后面的书名往前挪一个,然后将最后一个元素清空,相当于将借出的书从书单中删除。
在 `main` 函数中,我们打印了新的书单,即借书后的书单。
需要注意的是,使用 `strcpy` 函数时要确保目标字符串有足够的空间,否则可能会导致程序崩溃。在这个示例代码中,我们定义了每本书名最多 50 个字符的空间,因此可以直接使用 `strcpy` 函数。如果您的书名长度超过了 50 个字符,需要对代码进行相应的修改。
阅读全文
相关推荐


















