Dev C++中文亂碼的有效解決方案
很早就下載用了Dev c++ ,但現(xiàn)在隔了很長時(shí)間沒去用過了再次打開發(fā)現(xiàn)出現(xiàn)中文亂碼的現(xiàn)象!在網(wǎng)站上翻閱了許久!終于解決了問題!困擾了許久!

這個(gè)中文亂碼看著是真煩得慌?。?!
tips:不要急不要急,事情慢慢都能解決掉滴!
還有不要保存在C盤哦!最好都保存在D盤內(nèi)!本博客示范的未命名1.c 保存于C盤桌面上是為了演示方便!
圖1 這是我們?cè)瓉沓霈F(xiàn)中文亂碼的界面

編譯的時(shí)候會(huì)出現(xiàn)這個(gè)窗口

圖一

(再說一遍!這個(gè)中文亂碼在之前沒解決掉問題的時(shí)候一看到這個(gè)就很煩! )
圖二是編譯過后(中文亂碼版)

圖二
第一種方法(也是強(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!
第四步
打開記事本 查看右下角是否為ANSI!

圖8 被設(shè)置為ANSI的記事本

圖9 未被設(shè)置 會(huì)出現(xiàn)中文亂碼的記事本(看右下角顯示得失UTF-8)
第五步
點(diǎn)全部重新編譯 并運(yùn)行!就成功啦!

圖10 太幸福了!看見中文!
—>不要嫌麻煩!非常有效的一個(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)訪問鏈表中的所有節(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;
}
}
//如果沒能提前退出循環(huán),則說明之前沒有插入,那么當(dāng)前node節(jié)點(diǎn)的學(xué)號(hào)是最大值,此時(shí)插在鏈表的最后面
q->next = node;
}
return true;
}
bool deleteNode(Link head){
// 按照給定的學(xué)號(hào)刪除學(xué)生記錄,如果刪除成功返回true,如果沒找到學(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,如果沒找到學(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語句刪除鏈表中用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部分沒有內(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("沒有找到要?jiǎng)h除的學(xué)生節(jié)點(diǎn)。\n\n");
break;
case 3:
//查詢學(xué)生記錄
if(queryNode(head))
printf("成功找到學(xué)生記錄。\n\n");
else
printf("沒有找到要查詢的學(xué)生節(jié)點(diǎn)。\n\n");
break;
case 4:
//修改學(xué)生記錄
if(modifyNode(head))
printf("成功修改一個(gè)學(xué)生記錄。\n\n");
else
printf("沒有找到要修改的學(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ū)最多人推薦的(但博主沒成功哈 ?。?/h2>
第一步
打開 <編譯選項(xiàng)>

圖一 打開編譯選項(xiàng)

圖二 點(diǎn)開后的界面
第二步
勾選“編譯時(shí)加入以下命令 并 輸入“-fexec-chartset=gbk”后點(diǎn)擊確定即可

(此方法不一定適用于所有人 因?yàn)槲揖褪悄莻€(gè)用這個(gè)方法沒解決掉的?。?/p>
第三種方法(取自其他博主的博客)

這篇就這樣啦!
以上就是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-01
Visual Studio中scanf函數(shù)報(bào)錯(cuò)的幾種解決方法
本文主要介紹了Visual Studio中scanf函數(shù)報(bào)錯(cuò)的幾種解決方法,文中通過圖文示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(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
基于MFC實(shí)現(xiàn)自定義復(fù)選框效果
復(fù)選框是一種可同時(shí)選中多項(xiàng)的基礎(chǔ)控件,主要是有兩種明顯的狀態(tài):選中與非選中。本文將通過MFC框架實(shí)現(xiàn)自定義復(fù)選框效果,感興趣的可以了解一下2022-02-02

