很早就下载用了dev c++ ,但现在隔了很长时间没去用过了再次打开发现出现中文乱码的现象!在网站上翻阅了许久!终于解决了问题!困扰了许久!

这个中文乱码看着是真烦得慌!!!
tips:不要急不要急,事情慢慢都能解决掉滴!
还有不要保存在c盘哦!最好都保存在d盘内!本博客示范的未命名1.c 保存于c盘桌面上是为了演示方便!
图1 这是我们原来出现中文乱码的界面

编译的时候会出现这个窗口

图一

(再说一遍!这个中文乱码在之前没解决掉问题的时候一看到这个就很烦! )
图二是编译过后(中文乱码版)

图二
第一种方法(也是强推亲测有效法)
第一步
请点击左上角<控制台界面>左上角
选中<默认值d>

图三 操作第一步
第二步
将下方“使用旧版本控制台”勾上 并点击确定

图四 控制台点击默认值后的界面

图五 勾上下方按钮后

图6 点完确定之后再次这个操作出现这样子就代表操作对了!
第三步
将此.c文件另存为,并选择 ansi !!!


图7 选择ansi!
第四步
打开记事本 查看右下角是否为ansi!

图8 被设置为ansi的记事本

图9 未被设置 会出现中文乱码的记事本(看右下角显示得失utf-8)
第五步
点全部重新编译 并运行!就成功啦!

图10 太幸福了!看见中文!
—>不要嫌麻烦!非常有效的一个解决中文乱码的放大
提供一个检测是否成功修改好中文乱码的代码
(代码不完整但保证正确能顺利跑)
#include <stdio.h>
#include<string.h>
#include<malloc.h>
#include<stdlib.h>
#include<stdbool.h>
#define no_length 20
#define name_length 11
/* 定义学生结构体的数据结构 */
typedef struct student{
char studentno[no_length];
char studentname[name_length];
}st;
/* 定义每条记录或节点的数据结构 */
typedef struct node
{
struct student data; //数据域
struct node *next; //指针域
}node,*link; //node为node类型的别名,link为node类型的指针别名
//定义提示菜单
void mymenu(){
printf(" * * * * * * * * * 菜 单 * * * * * * * * * *\n");
printf(" 1 增加学生记录 2 删除学生记录 \n");
printf(" 3 查找学生记录 4 修改学生记录 \n");
printf(" 5 统计学生人数 6 显示学生记录 \n");
printf(" 7 退出系统 \n");
printf(" * * * * * * * * * * * * * * * * * * * * * * * *\n");
}
void inputstudent(link l){
printf("请输入学生学号:");
scanf("%s",l->data.studentno);
printf("请输入学生的姓名:");
scanf("%s",l->data.studentname);
//每个新创建的节点的next域都初始化为null
l->next = null;
}
void inputstudentno(char s[],char no[]){
printf("请输入要%s的学生学号:",s);
scanf("%s",no);
}
void displaynode(link head){
// 填写代码,根据传入的链表head头指针,扫描链表显示所有节点的信息
}
/* 增加学生记录 */
bool addnode(link head){
link p,q; //p,q两个节点一前一后
link node; //node指针指向新创建的节点
node=(link)malloc(sizeof(node));
inputstudent(node);
q = head;
p = head->next; //q指向head后面的第一个有效节点
if(head->next==null)
//链表为空时
head->next = node;
else {
//循环访问链表中的所有节点
while(p != null){
if (node->data.studentno < p->data.studentno){
//如果node节点的学号比p节点的学号小,则插在p的前面,完成插入后,提前退出子程序
q->next = node;
node->next = p;
return true;
}
else{
//如果node节点的学号比p节点的学号大,继续向后移动指针(依然保持pq一前一后)
q = p;
p = p->next;
}
}
//如果没能提前退出循环,则说明之前没有插入,那么当前node节点的学号是最大值,此时插在链表的最后面
q->next = node;
}
return true;
}
bool deletenode(link head){
// 按照给定的学号删除学生记录,如果删除成功返回true,如果没找到学号返回false
//输入要处理的学号
char no[no_length];
inputstudent
no("查询",no);
return false;
}
bool modifynode(link head){
// 按照给定的学号找到学生记录节点,如果修改成功返回true,如果没找到学号返回false
//输入要处理的学号
char no[no_length];
inputstudentno("修改",no);
return false;
}
int countnode(link head){
//统计学生人数,扫描链表统计节点个数,返回节点数
link p;
int count = 0;
p = head->next;
//填充代码
return false;
}
void clearlink(link head){
link q,p;
//遍历链表,用free语句删除链表中用malloc建立起的所有的节点
}
int main() {
int select;
int count;
link head; // 定义链表
//建立head头结点,在这个程序中head指向头结点,头结点data部分没有内容,其后续节点才有真正的数据
head = (link)malloc(sizeof(node));
head->next = null;
while(1)
{
mymenu();
printf("\n请输入你的选择(0-7):"); //显示提示信息
scanf("%d",&select);
switch(select)
{
case 1:
//增加学生记录
if(addnode(head))
printf("成功插入一个学生记录。\n\n");
break;
case 2:
//删除学生记录
if(deletenode(head))
printf("成功删除一个学生记录。\n\n");
else
printf("没有找到要删除的学生节点。\n\n");
break;
case 3:
//查询学生记录
if(querynode(head))
printf("成功找到学生记录。\n\n");
else
printf("没有找到要查询的学生节点。\n\n");
break;
case 4:
//修改学生记录
if(modifynode(head))
printf("成功修改一个学生记录。\n\n");
else
printf("没有找到要修改的学生节点。\n\n");
break;
case 5:
//统计学生人数
count = countnode(head);
printf("学生人数为:%d\n\n",count);
break;
case 6:
//显示学生记录
displaynode(head);
break;
case 7:
//退出前清除链表中的所有结点
clearlink(head);
return 0;
default:
printf("输入不正确,应该输入0-7之间的数。\n\n");
break;
}
}
return 0;
}第二种方法 也是本社区最多人推荐的(但博主没成功哈 !)
第一步
打开 <编译选项>

图一 打开编译选项

图二 点开后的界面
第二步
勾选“编译时加入以下命令 并 输入“-fexec-chartset=gbk”后点击确定即可

(此方法不一定适用于所有人 因为我就是那个用这个方法没解决掉的!)
第三种方法(取自其他博主的博客)

这篇就这样啦!
以上就是dev c++中文乱码的有效解决方案的详细内容,更多关于dev c++中文乱码的资料请关注代码网其它相关文章!
发表评论