typedef struct { int id; char name[30]; char author[30]; char press[30]; }Book;怎么引用
时间: 2024-01-06 17:03:18 浏览: 42
定义了结构体类型 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;Book bookList[MAX_BOOKS]={ {"1","唐诗三百首","孙洙","南京大学出版社",1}, {"2","三体","刘慈欢","北美权威科幻类出版社",1}, {"3","稻草人","叶圣陶","湖南儿童出版社",1}, {"4","老人与海","海明威","上海译文出版社",1}, {"5","c语言","泰戈尔","浙江文艺出版社",1}}; for(int j=0;j<numbooks;j++) { printf("%5s\t%15s\t%10s\t%25s\n",bookList[j].id,bookList[j].name,bookList[j].author,bookList[j].press); }为什么这样会出现乱码
这样出现乱码的原因可能是因为编译器输出字符时采用的是默认编码方式,而默认编码方式与你的控制台窗口的编码方式不一致导致的。可以尝试将输出编码方式改为与控制台窗口相同的编码方式。
在 Windows 操作系统中,控制台窗口的默认编码方式是 GBK 编码。因此,可以将输出编码方式改为 GBK 编码,如下所示:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
typedef struct {
char id[30];
char name[30]; //书名
char author[30]; //作者
char press[30]; //出版社名
int available;//1表示未借出,0表示已借出
} Book;
Book bookList[MAX_BOOKS]=
{
{"1","唐诗三百首","孙洙","南京大学出版社",1},
{"2","三体","刘慈欢","北美权威科幻类出版社",1},
{"3","稻草人","叶圣陶","湖南儿童出版社",1},
{"4","老人与海","海明威","上海译文出版社",1},
{"5","c语言","泰戈尔","浙江文艺出版社",1}
};
int main()
{
setlocale(LC_ALL, "chs"); // 设置本地化环境为中文
system("chcp 936"); // 设置控制台编码方式为 GBK 编码
int numbooks = 5;
for(int j=0;j<numbooks;j++) {
printf("%5s\t%15s\t%10s\t%25s\n",bookList[j].id,bookList[j].name,bookList[j].author,bookList[j].press);
}
return 0;
}
```
在上面的代码中,我们通过 `setlocale` 函数将本地化环境设置为中文,通过 `system` 函数调用控制台命令 `chcp 936` 将控制台编码方式设置为 GBK 编码,这样就可以在控制台窗口中正确输出中文了。