void add_comment() { char a[10]; show(); printf("请输入要评论的图书编号:"); scanf("%s", a); for (int i = 0; i < num; i++) { if (strcmp(book[i].id, a) == 0) { int comment_id = num_comments; comments[num_comments].id = comment_id; comments[num_comments].book_id = i; printf("请输入评论:"); getchar(); // 消耗掉之前输入的回车符 fgets(comments[num_comments].text, sizeof(comments[num_comments].text), stdin); comments[num_comments].text[strlen(comments[num_comments].text)-1] = '\0'; book[i].commentids[book[i].commentcount] = comment_id; book[i].commentcount++; num_comments++; printf("评论成功!\n"); return; } } printf("没有这本书!\n"); }将他优化可以多条评论
时间: 2024-01-23 17:02:19 浏览: 19
可以使用一个 while 循环来允许用户连续评论多本图书,直到用户输入 exit 或者结束程序。同时,可以将评论的部分封装成一个函数以减少代码重复。
优化后的代码如下:
```c++
void add_comment_to_book(int book_index) {
int comment_id = num_comments;
comments[num_comments].id = comment_id;
comments[num_comments].book_id = book_index;
printf("请输入评论:");
getchar(); // 消耗掉之前输入的回车符
fgets(comments[num_comments].text, sizeof(comments[num_comments].text), stdin);
comments[num_comments].text[strlen(comments[num_comments].text)-1] = '\0';
book[book_index].commentids[book[book_index].commentcount] = comment_id;
book[book_index].commentcount++;
num_comments++;
printf("评论成功!\n");
}
void add_comment() {
show();
printf("请输入要评论的图书编号:");
char book_id[10];
scanf("%s", book_id);
int book_index = -1;
for (int i = 0; i < num; i++) {
if (strcmp(book[i].id, book_id) == 0) {
book_index = i;
break;
}
}
if (book_index == -1) {
printf("没有这本书!\n");
return;
}
while (true) {
printf("请输入要添加的评论,或者输入 exit 结束:\n");
char input[100];
scanf("%s", input);
if (strcmp(input, "exit") == 0) {
break;
}
add_comment_to_book(book_index);
}
}
```
这样用户就可以不断地添加评论,直到自己想要结束为止。