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

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

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

圖一

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

圖二
第一種方法(也是強(qiáng)推親測有效法)
第一步
請點(diǎn)擊左上角<控制臺(tái)界面>左上角
選中<默認(rèn)值D>

圖三 操作第一步
第二步
將下方“使用舊版本控制臺(tái)”勾上 并點(diǎn)擊確定

圖四 控制臺(tái)點(diǎn)擊默認(rèn)值后的界面

圖五 勾上下方按鈕后

圖6 點(diǎn)完確定之后再次這個(gè)操作出現(xiàn)這樣子就代表操作對了!
第三步
將此.c文件另存為,并選擇 ANSI ?。?!


圖7 選擇ANSI!
第四步
打開記事本 查看右下角是否為ANSI!

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

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

圖10 太幸福了!看見中文!
—>不要嫌麻煩!非常有效的一個(gè)解決中文亂碼的放大
提供一個(gè)檢測是否成功修改好中文亂碼的代碼
(代碼不完整但保證正確能順利跑)
#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("請輸入學(xué)生學(xué)號:");
scanf("%s",l->data.studentNo);
printf("請輸入學(xué)生的姓名:");
scanf("%s",l->data.studentName);
//每個(gè)新創(chuàng)建的節(jié)點(diǎn)的next域都初始化為NULL
l->next = NULL;
}
void inputStudentNo(char s[],char no[]){
printf("請輸入要%s的學(xué)生學(xué)號:",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é)號比p節(jié)點(diǎn)的學(xué)號小,則插在p的前面,完成插入后,提前退出子程序
q->next = node;
node->next = p;
return true;
}
else{
//如果node節(jié)點(diǎn)的學(xué)號比p節(jié)點(diǎn)的學(xué)號大,繼續(xù)向后移動(dòng)指針(依然保持pq一前一后)
q = p;
p = p->next;
}
}
//如果沒能提前退出循環(huán),則說明之前沒有插入,那么當(dāng)前node節(jié)點(diǎn)的學(xué)號是最大值,此時(shí)插在鏈表的最后面
q->next = node;
}
return true;
}
bool deleteNode(Link head){
// 按照給定的學(xué)號刪除學(xué)生記錄,如果刪除成功返回true,如果沒找到學(xué)號返回false
//輸入要處理的學(xué)號
char no[NO_LENGTH];
inputStudent
No("查詢",no);
return false;
}
bool modifyNode(Link head){
// 按照給定的學(xué)號找到學(xué)生記錄節(jié)點(diǎn),如果修改成功返回true,如果沒找到學(xué)號返回false
//輸入要處理的學(xué)號
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請輸入你的選擇(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++中文亂碼的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
如何基于C語言socket編程實(shí)現(xiàn)TCP通信
本文介紹了如何基于C語言socket編程實(shí)現(xiàn)TCP通信,下面小編來簡單介紹下2019-05-05
Qt物聯(lián)網(wǎng)管理平臺(tái)之實(shí)現(xiàn)數(shù)據(jù)查詢導(dǎo)出打印
這篇文章主要為大家介紹了如何利用Qt編寫物聯(lián)網(wǎng)管理平臺(tái)中數(shù)據(jù)查詢導(dǎo)出打印的功能,文字的示例代碼講解詳細(xì),感興趣的可以了解一下2022-07-07
C++課程設(shè)計(jì)之運(yùn)動(dòng)會(huì)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++課程設(shè)計(jì)之運(yùn)動(dòng)會(huì)管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10
C++?Boost?ProgramOptions超詳細(xì)講解
Boost是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱。Boost庫是一個(gè)可移植、提供源代碼的C++庫,作為標(biāo)準(zhǔn)庫的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開發(fā)引擎之一,是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱2022-11-11

