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