typedef struct { int id; char name[30]; char author[30]; char press[30]; }Book;怎么引用
时间: 2024-01-06 22:03:18 浏览: 81
定义了结构体类型 Book 后,可以使用该类型创建具体的结构体变量。例如:
Book book1; // 创建一个名为 book1 的 Book 类型的结构体变量
可以通过点运算符访问结构体变量的成员变量,例如:
book1.id = 1;
strcpy(book1.name, "C++ Primer");
strcpy(book1.author, "Lippman");
strcpy(book1.press, "O'Reilly");
这样就可以给 book1 结构体变量的成员变量赋值了。
相关问题
typedef struct { int id; char name[30]; char author[30]; char press[30]; }Book;怎么初始化
可以使用类似数组初始化的方式来初始化结构体变量。例如,可以按照如下方式初始化 book1 结构体变量:
```c++
Book book1 = {1, "C++ Primer", "Lippman", "O'Reilly"};
```
这样就可以同时给结构体变量的成员变量赋初值。
另外,也可以使用逐个赋值的方式来初始化结构体变量,例如:
```c++
Book book1;
book1.id = 1;
strcpy(book1.name, "C++ Primer");
strcpy(book1.author, "Lippman");
strcpy(book1.press, "O'Reilly");
```
这两种方式都可以初始化结构体变量。
typedef struct { char id[30]; char name[30]; //书名 char author[30]; //作者 char press[30]; //出版社名 int available;//1表示未借出,0表示已借出 }Book;void deletebook(Book bookList[]) { char delete_bookname[30]; for(int j=0;j<numbooks;j++) { printf("%-5s%-15s%-10s%-25s\n",bookList[j].id,bookList[j].name,bookList[j].author,bookList[j].press); } printf("请输入您想删除的书名:"); scanf("%s",delete_bookname); for(int j=0;j<numbooks;j++) { if(strcmp(bookList[j].name,delete_bookname)==0) { strcpy(bookList[j].id,bookList[j+1].id); strcpy(bookList[j].name,bookList[j+1].name); strcpy(bookList[j].author,bookList[j+1].author); strcpy(bookList[j].press,bookList[j+1].press); numbooks--; printf("图书信息删除完成!\n"); break; } } for(int j=0;j<numbooks;j++) { printf("%-5s%-15s%-10s%-25s\n",bookList[j].id,bookList[j].name,bookList[j].author,bookList[j].press); } 怎么更改
这段代码实现的功能是删除图书信息,但是存在一个问题,即在删除一本书之后,将该书后面的所有书的信息向前移动一个位置,这可能会导致最后一本书的信息没有被删除。可以通过将最后一本书的信息复制到要删除的书的位置上,并将最后一本书的信息清空来解决这个问题。修改后的代码如下:
```
void deletebook(Book bookList[]) {
char delete_bookname[30];
for(int j=0;j<numbooks;j++) {
printf("%-5s%-15s%-10s%-25s\n",bookList[j].id,bookList[j].name,bookList[j].author,bookList[j].press);
}
printf("请输入您想删除的书名:");
scanf("%s",delete_bookname);
for(int j=0;j<numbooks;j++) {
if(strcmp(bookList[j].name,delete_bookname)==0) {
if(j == numbooks - 1) {
// 如果是最后一本书,直接将 numbooks 减一
numbooks--;
} else {
// 否则将最后一本书的信息复制到要删除的书的位置上,并将最后一本书的信息清空
strcpy(bookList[j].id, bookList[numbooks-1].id);
strcpy(bookList[j].name, bookList[numbooks-1].name);
strcpy(bookList[j].author, bookList[numbooks-1].author);
strcpy(bookList[j].press, bookList[numbooks-1].press);
bookList[numbooks-1].id[0] = '\0';
bookList[numbooks-1].name[0] = '\0';
bookList[numbooks-1].author[0] = '\0';
bookList[numbooks-1].press[0] = '\0';
numbooks--;
}
printf("图书信息删除完成!\n");
break;
}
}
for(int j=0;j<numbooks;j++) {
printf("%-5s%-15s%-10s%-25s\n",bookList[j].id,bookList[j].name,bookList[j].author,bookList[j].press);
}
}
```
阅读全文