Dev C++中文亂碼的有效解決方案
很早就下載用了Dev c++ ,但現(xiàn)在隔了很長時間沒去用過了再次打開發(fā)現(xiàn)出現(xiàn)中文亂碼的現(xiàn)象!在網(wǎng)站上翻閱了許久!終于解決了問題!困擾了許久!
這個中文亂碼看著是真煩得慌!??!
tips:不要急不要急,事情慢慢都能解決掉滴!
還有不要保存在C盤哦!最好都保存在D盤內(nèi)!本博客示范的未命名1.c 保存于C盤桌面上是為了演示方便!
圖1 這是我們原來出現(xiàn)中文亂碼的界面
編譯的時候會出現(xiàn)這個窗口
圖一
(再說一遍!這個中文亂碼在之前沒解決掉問題的時候一看到這個就很煩! )
圖二是編譯過后(中文亂碼版)
圖二
第一種方法(也是強推親測有效法)
第一步
請點擊左上角<控制臺界面>左上角
選中<默認值D>
圖三 操作第一步
第二步
將下方“使用舊版本控制臺”勾上 并點擊確定
圖四 控制臺點擊默認值后的界面
圖五 勾上下方按鈕后
圖6 點完確定之后再次這個操作出現(xiàn)這樣子就代表操作對了!
第三步
將此.c文件另存為,并選擇 ANSI ?。?!
圖7 選擇ANSI!
第四步
打開記事本 查看右下角是否為ANSI!
圖8 被設置為ANSI的記事本
圖9 未被設置 會出現(xiàn)中文亂碼的記事本(看右下角顯示得失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 /* 定義學生結(jié)構(gòu)體的數(shù)據(jù)結(jié)構(gòu) */ typedef struct Student{ char studentNo[NO_LENGTH]; char studentName[NAME_LENGTH]; }st; /* 定義每條記錄或節(jié)點的數(shù)據(jù)結(jié)構(gòu) */ typedef struct node { struct Student data; //數(shù)據(jù)域 struct node *next; //指針域 }Node,*Link; //Node為node類型的別名,Link為node類型的指針別名 //定義提示菜單 void myMenu(){ printf(" * * * * * * * * * 菜 單 * * * * * * * * * *\n"); printf(" 1 增加學生記錄 2 刪除學生記錄 \n"); printf(" 3 查找學生記錄 4 修改學生記錄 \n"); printf(" 5 統(tǒng)計學生人數(shù) 6 顯示學生記錄 \n"); printf(" 7 退出系統(tǒng) \n"); printf(" * * * * * * * * * * * * * * * * * * * * * * * *\n"); } void inputStudent(Link l){ printf("請輸入學生學號:"); scanf("%s",l->data.studentNo); printf("請輸入學生的姓名:"); scanf("%s",l->data.studentName); //每個新創(chuàng)建的節(jié)點的next域都初始化為NULL l->next = NULL; } void inputStudentNo(char s[],char no[]){ printf("請輸入要%s的學生學號:",s); scanf("%s",no); } void displayNode(Link head){ // 填寫代碼,根據(jù)傳入的鏈表head頭指針,掃描鏈表顯示所有節(jié)點的信息 } /* 增加學生記錄 */ bool addNode(Link head){ Link p,q; //p,q兩個節(jié)點一前一后 Link node; //node指針指向新創(chuàng)建的節(jié)點 node=(Link)malloc(sizeof(Node)); inputStudent(node); q = head; p = head->next; //q指向head后面的第一個有效節(jié)點 if(head->next==NULL) //鏈表為空時 head->next = node; else { //循環(huán)訪問鏈表中的所有節(jié)點 while(p != NULL){ if (node->data.studentNo < p->data.studentNo){ //如果node節(jié)點的學號比p節(jié)點的學號小,則插在p的前面,完成插入后,提前退出子程序 q->next = node; node->next = p; return true; } else{ //如果node節(jié)點的學號比p節(jié)點的學號大,繼續(xù)向后移動指針(依然保持pq一前一后) q = p; p = p->next; } } //如果沒能提前退出循環(huán),則說明之前沒有插入,那么當前node節(jié)點的學號是最大值,此時插在鏈表的最后面 q->next = node; } return true; } bool deleteNode(Link head){ // 按照給定的學號刪除學生記錄,如果刪除成功返回true,如果沒找到學號返回false //輸入要處理的學號 char no[NO_LENGTH]; inputStudent No("查詢",no); return false; } bool modifyNode(Link head){ // 按照給定的學號找到學生記錄節(jié)點,如果修改成功返回true,如果沒找到學號返回false //輸入要處理的學號 char no[NO_LENGTH]; inputStudentNo("修改",no); return false; } int countNode(Link head){ //統(tǒng)計學生人數(shù),掃描鏈表統(tǒng)計節(jié)點個數(shù),返回節(jié)點數(shù) Link p; int count = 0; p = head->next; //填充代碼 return false; } void clearLink(Link head){ Link q,p; //遍歷鏈表,用free語句刪除鏈表中用malloc建立起的所有的節(jié)點 } int main() { int select; int count; Link head; // 定義鏈表 //建立head頭結(jié)點,在這個程序中head指向頭結(jié)點,頭結(jié)點data部分沒有內(nèi)容,其后續(xù)節(jié)點才有真正的數(shù)據(jù) 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("沒有找到要刪除的學生節(jié)點。\n\n"); break; case 3: //查詢學生記錄 if(queryNode(head)) printf("成功找到學生記錄。\n\n"); else printf("沒有找到要查詢的學生節(jié)點。\n\n"); break; case 4: //修改學生記錄 if(modifyNode(head)) printf("成功修改一個學生記錄。\n\n"); else printf("沒有找到要修改的學生節(jié)點。\n\n"); break; case 5: //統(tǒng)計學生人數(shù) count = countNode(head); printf("學生人數(shù)為:%d\n\n",count); break; case 6: //顯示學生記錄 displayNode(head); break; case 7: //退出前清除鏈表中的所有結(jié)點 clearLink(head); return 0; default: printf("輸入不正確,應該輸入0-7之間的數(shù)。\n\n"); break; } } return 0; }
第二種方法 也是本社區(qū)最多人推薦的(但博主沒成功哈 ?。?/h2>
第一步
打開 <編譯選項>
圖一 打開編譯選項
圖二 點開后的界面
第二步
勾選“編譯時加入以下命令 并 輸入“-fexec-chartset=gbk”后點擊確定即可
(此方法不一定適用于所有人 因為我就是那個用這個方法沒解決掉的!)
第三種方法(取自其他博主的博客)
這篇就這樣啦!
以上就是Dev C++中文亂碼的有效解決方案的詳細內(nèi)容,更多關(guān)于Dev C++中文亂碼的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解C/C++ Linux出錯處理函數(shù)(strerror與perror)的使用
我們知道,系統(tǒng)函數(shù)調(diào)用不能保證每次都成功,必須進行出錯處理,這樣一方面可以保證程序邏輯正常,另一方面可以迅速得到故障信息。本文主要為大家介紹兩個出錯處理函數(shù)(strerror、perror)的使用,需要的可以參考一下2023-01-01Visual Studio中scanf函數(shù)報錯的幾種解決方法
本文主要介紹了Visual Studio中scanf函數(shù)報錯的幾種解決方法,文中通過圖文示例介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-03-03