这是博主第一篇博客!记录一下博主的小小小小解决史!
很早就下载用了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]; inputStudentNo("查询",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-chart=gbk”后点击确定即可
(此方法不一定适用于所有人 因为我就是那个用这个方法没解决掉的!)
第三种方法 取自CSDN社区其他博主的博客
notepad++下载及安装步骤
你似乎来到了没有知识存在的荒原 - 知乎
这篇就这样啦!
如果有其他方法可分享在评论区帮助更多的小白结合问题!
如 你有更完善的解决方法也可以发在评论区!
“学习经验值+?”!
一起加油吧各位 !