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); }为什么这样会出现乱码
时间: 2023-07-19 20:50:39 浏览: 109
这样出现乱码的原因可能是因为编译器输出字符时采用的是默认编码方式,而默认编码方式与你的控制台窗口的编码方式不一致导致的。可以尝试将输出编码方式改为与控制台窗口相同的编码方式。
在 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 编码,这样就可以在控制台窗口中正确输出中文了。
阅读全文