嘿嘿 解决了Dev C++ 中文乱码(有效版)

发布于:2024-07-05 ⋅ 阅读:(20) ⋅ 点赞:(0)

这是博主第一篇博客!记录一下博主的小小小小解决史!

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


———————————————————————
b9cad95bc59e4dedbce6f4e952bb0234.png

这个中文乱码看着是真烦得慌!!!
tips:不要急不要急,事情慢慢都能解决掉滴!

还有不要保存在C盘哦!最好都保存在D盘内!本博客示范的未命名1.c 保存于C盘桌面上是为了演示方便!

——————————————————————————— 

图1 这是我们原来出现中文乱码的界面

685a3576c1af4600b1a82f9f3b8de7bb.png

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

c5eb615f3a7f4727976dd0f2b48d6661.png

图一

bcef55a826094c95986a2c723ad40116.png

(再说一遍!这个中文乱码在之前没解决掉问题的时候一看到这个就很烦! )

图二是编译过后(中文乱码版)

2c62315224834b6e94745958329d7380.png图二 

        —————————————————————————

  • 第一种方法(也是博主强推亲测有效法)

·第一步

        请点击左上角<控制台界面>左上角

               选中<默认值D>

23a9a0bf676c47e88d9f07fa848416e9.png

图三   操作第一步    

·第二步

         将下方“使用旧版本控制台”勾上 并点击确定

590eaa2541c1436f9865d37dba80fddf.png

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

b382ae434ff44bae9576bd883c87084e.png

                         图五 勾上下方按钮后 

0db3a3de37cf44349b12aca52a485600.png

 图6 点完确定之后再次这个操作出现这样子就代表操作对了!

·第三步

        将此.c文件另存为,并选择 ANSI !!!

3b9bd6ddc3244a4b9abc9d4cfb2097a9.png

936d19a1118a4e089c5f605dd7d2fc3d.png

 图7 选择ANSI!

·第四步

打开记事本 查看右下角是否为ANSI!

464aac9366ca47c197b85bc97342d5af.png

图8 被设置为ANSI的记事本

d49642558024404c92f734af48c78c40.png

图9 未被设置 会出现中文乱码的记事本(看右下角显示得失UTF-8) 

·第五步

点全部重新编译 并运行!就成功啦! 

065d2108fa4146cfae3b1e3e92562d9e.png

图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;
}


第二种方法  也是本社区最多人推荐的(但博主没成功哈 !)

  • 第一步

        打开 <编译选项>

529a123353094dfe986636b352657ea3.png 图一 打开编译选项

  • 752e66305b044607946eaff8be0d5d02.png图二 点开后的界面
  • 第二步

         勾选“编译时加入以下命令 并 输入“-fexec-chart=gbk”后点击确定即可

  • 430679c36e054d3c97fde6939ecf7d9e.png

 (此方法不一定适用于所有人 因为我就是那个用这个方法没解决掉的!)



第三种方法  取自CSDN社区其他博主的博客

notepad++下载及安装步骤 

你似乎来到了没有知识存在的荒原 - 知乎bb6bf77d43264cbbb3addbd183607ed8.png 



这篇就这样啦!

如果有其他方法可分享在评论区帮助更多的小白结合问题!

如 你有更完善的解决方法也可以发在评论区!

 “学习经验值+𝟭”!

一起加油吧各位 !


网站公告

今日签到

点亮在社区的每一天
去签到