刚学习C++,用的软件是GCC,编程用中文就出现乱码,编译之后又能显示中文,有大佬知道什么情况吗?

【新人求救】为什么我写的C++程序显示不了中文?【c++吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:293,865贴子:
【新人求救】为什么我写的C++程序显示不了中文?收藏
我用的是Turbo C\c++ For Windows 集成实验与学习环境2010 我的程序里有这段代码:{ "玩家1按键", " 上----w", " 下--s", " 左--a", " 右-d", " 下棋----空格键", "", "玩家2按键", " 上----↑", " 下--↓", " 左--←", " 右-→", " 下棋----回车键", "", "退出游戏:", " ESC", NULL, };
但是等我编译好以后一打开,发现全是乱码,怎么回事???
c++培训课程,美国上市公司&达内&出品c++课程,15年教学经验,总监级c++讲师亲授!!达内首创&先就业后付款&模式.名企项目总监授课,成就&稀缺级&c/c++软件工程师
Turbo C++?
我也是初中生,听说这里有个叫杰物的童鞋很厉害,特来求助
回复:2楼对,这个东西不好吗?
回复:4楼不知道,你用Dev-C++试试?毕竟TurboC这些都是老东西了……可能支持不好
回复:5楼Dev-C++?能告诉我全名吗?我好下载 不会吧,我的Turbo可是2010.3月出的我能在编程界面输入中文,可是编译以后就成乱码了
回复:6楼我能在编程界面输入中文,可是编译以后就成乱码了
回复:9楼谢谢
现在又wxDev-C++,不过这个米有用过~
郁闷了,我用Turbo-C++编译时没有任何问题,而用Dev-c编译却发现一堆问题- -这是我的五子棋的源码,你们看看,谢谢了:#include &stdio.h& #include"bios.h"#include &ctype.h& #include &conio.h& #include &dos.h& #define CROSSRU 0xbf /*右上角点*/ #define CROSSLU 0xda /*左上角点*/ #define CROSSLD 0xc0 /*左下角点*/ #define CROSSRD 0xd9 /*右下角点*/ #define CROSSL 0xc3 /*左边*/ #define CROSSR 0xb4 /*右边*/ #define CROSSU 0xc2 /*上边*/ #define CROSSD 0xc1 /*下边*/ #define CROSS 0xc5 /*十字交叉点*/ /*定义棋盘左上角点在屏幕上的位置*/ #define MAPXOFT 5 #define MAPYOFT 2 /*定义1号玩家的操作键键码*/ #define PLAY1UP 0x1157/*上移--'W'*/ #define PLAY1DOWN 0x1f53/*下移--'S'*/ #define PLAY1LEFT 0x1e41/*左移--'A'*/ #define PLAY1RIGHT 0x2044/*右移--'D'*/ #define PLAY1DO 0x3920/*落子--空格键*/ /*定义2号玩家的操作键键码*/ #define PLAY2UP 0x4800/*上移--方向键up*/ #define PLAY2DOWN 0x5000/*下移--方向键down*/ #define PLAY2LEFT 0x4b00/*左移--方向键left*/ #define PLAY2RIGHT 0x4d00/*右移--方向键right*/ #define PLAY2DO 0x1c0d/*落子--回车键Enter*/ /*若想在游戏中途退出, 可按 Esc 键*/ #define ESCAPE 0x011b /*定义棋盘上交叉点的状态, 即该点有无棋子 */ /*若有棋子, 还应能指出是哪个玩家的棋子 */ #define CHESSNULL 0 /*没有棋子*/ #define CHESS1 '○'/*一号玩家的棋子*/ #define CHESS2 '×'/*二号玩家的棋子*/ /*定义按键类别*/ #define KEYEXIT 0/*退出键*/ #define KEYFALLCHESS 1/*落子键*/ #define KEYMOVECURSOR 2/*光标移动键*/ #define KEYINVALID 3/*无效键*/ /*定义符号常量: 真, 假 --- 真为1, 假为0 */ #define TRUE 1 #define FALSE 0 /**********************************************************/ /* 定义数据结构 */ /*棋盘交叉点坐标的数据结构*/ struct point { int x,y; }; /**********************************************************/ /*自定义函数原型说明 */ void Init(void); int GetKey(void); int CheckKey(int press); int ChangeOrder(void); int ChessGo(int Order,struct point Cursor); void DoError(void); void DoOK(void); void DoWin(int Order); void MoveCursor(int Order,int press); void DrawCross(int x,int y); void DrawMap(void); int JudgeWin(int Order,struct point Cursor); int JudgeWinLine(int Order,struct point Cursor,int direction); void ShowOrderMsg(int Order); void EndGame(void); /**********************************************************/ /**********************************************************/ /* 定义全局变量 */ int gPlayO /*指示当前行棋方 */ struct point gC /*光标在棋盘上的位置 */ char gChessBoard[19][19];/*用于记录棋盘上各点的状态*/ /**********************************************************/ /**********************************************************/ /*主函数*/
精心设计的网站却经常打开慢/打不开?景安虚拟主机10M独享带宽,经济适用!
void main() {
int bOutWhile=FALSE;/*退出循环标志*/ Init();/*初始化图象,数据*/ while(1) { press=GetKey();/*获取用户的按键值*/ switch(CheckKey(press))/*判断按键类别*/ { /*是退出键*/ case KEYEXIT: clrscr();/*清屏*/ bOutWhile = TRUE;
/*是落子键*/ case KEYFALLCHESS: if(ChessGo(gPlayOrder,gCursor)==FALSE)/*走棋*/ DoError();/*落子错误*/ else { DoOK();/*落子正确*/ /*如果当前行棋方赢棋*/ if(JudgeWin(gPlayOrder,gCursor)==TRUE) { DoWin(gPlayOrder); bOutWhile = TRUE;/*退出循环标志置为真*/ } /*否则*/ else /*交换行棋方*/ ChangeOrder(); ShowOrderMsg(gPlayOrder); }
/*是光标移动键*/ case KEYMOVECURSOR: MoveCursor(gPlayOrder,press);
/*是无效键*/ case KEYINVALID:
} if(bOutWhile==TRUE)
} /*游戏结束*/ EndGame(); } /**********************************************************/ /*界面初始化,数据初始化*/ void Init(void) { int i,j; char *Msg[]= { "玩家1按键", " 上----w", " 下--s", " 左--a", " 右-d", " 下棋----空格键", "", "玩家2按键", " 上----↑", " 下--↓", " 左--←", " 右-→", " 下棋----回车键", "", "退出游戏:", " ESC", NULL, }; /* 先手方为1号玩家 */ gPlayOrder = CHESS1; /* 棋盘数据清零, 即棋盘上各点开始的时候都没有棋子 */ for(i=0;i&19;i++) for(j=0;j&19;j++) gChessBoard[i][j]=CHESSNULL; /*光标初始位置*/ gCursor.x=gCursor.y=0; /*画棋盘*/ textmode(C40); DrawMap(); /*显示操作键说明*/ i=0; textcolor(BROWN); while(Msg[i]!=NULL) { gotoxy(25,3+i); cputs(Msg[i]); i++; } /*显示当前行棋方*/ ShowOrderMsg(gPlayOrder); /*光标移至棋盘的左上角点处*/ gotoxy(gCursor.x+MAPXOFT,gCursor.y+MAPYOFT); } /*画棋盘*/ void DrawMap(void) { int i,j; clrscr(); for(i=0;i&19;i++) for(j=0;j&19;j++) DrawCross(i,j); } /*画棋盘上的交叉点*/ void DrawCross(int x,int y) { gotoxy(x+MAPXOFT,y+MAPYOFT); /*交叉点上是一号玩家的棋子*/ if(gChessBoard[x][y]==CHESS1) { textcolor(LIGHTBLUE); putch(CHESS1);
} /*交叉点上是二号玩家的棋子*/ if(gChessBoard[x][y]==CHESS2) { textcolor(LIGHTRED); putch(CHESS2);
} textcolor(GREEN); /*左上角交叉点*/ if(x==0&&y==0) { putch(CROSSLU);
} /*左下角交叉点*/ if(x==0&&y==18) { putch(CROSSLD);
} /*右上角交叉点*/ if(x==18&&y==0) { putch(CROSSRU);
} /*右下角交叉点*/ if(x==18&&y==18) { putch(CROSSRD);
} /*左边界交叉点*/ if(x==0) { putch(CROSSL);
} /*右边界交叉点*/ if(x==18) { putch(CROSSR);
} /*上边界交叉点*/ if(y==0) { putch(CROSSU);
} /*下边界交叉点*/ if(y==18) { putch(CROSSD);
} /*棋盘中间的交叉点*/ putch(CROSS); } /*交换行棋方*/ int ChangeOrder(void) { if(gPlayOrder==CHESS1) gPlayOrder=CHESS2; else gPlayOrder=CHESS1; return(gPlayOrder); } /*获取按键值*/ int GetKey(void) {
while (bioskey(1) == 0) ;/*如果用户没有按键,空循环*/ press=bioskey(0); lowbyte=press&0 press=press&0xff00 + toupper(lowbyte); return(press); } /*落子错误处理*/ void DoError(void) { sound(1200); delay(50); nosound(); } /*赢棋处理*/ void DoWin(int Order) { sound(1500);delay(100); sound(0); delay(50); sound(800); delay(100); sound(0); delay(50); sound(1500);delay(100); sound(0); delay(50); sound(800); delay(100); sound(0); delay(50); nosound(); textcolor(RED+BLINK); gotoxy(25,20); if(Order==CHESS1) cputs("玩家1胜利!"); else cputs("玩家2胜利!"); gotoxy(25,21); cputs("\n"); getch(); } /*走棋*/ int ChessGo(int Order,struct point Cursor) { /*判断交叉点上有无棋子*/ if(gChessBoard[Cursor.x][Cursor.y]==CHESSNULL) { /*若没有棋子, 则可以落子*/ gotoxy(Cursor.x+MAPXOFT,Cursor.y+MAPYOFT); textcolor(LIGHTBLUE); putch(Order); gotoxy(Cursor.x+MAPXOFT,Cursor.y+MAPYOFT); gChessBoard[Cursor.x][Cursor.y]=O return TRUE; } else return FALSE; } /*判断当前行棋方落子后是否赢棋*/ int JudgeWin(int Order,struct point Cursor) {
for(i=0;i&4;i++) /*判断在指定方向上是否有连续5个行棋方的棋子*/ if(JudgeWinLine(Order,Cursor,i)) return TRUE; return FALSE; } /*判断在指定方向上是否有连续5个行棋方的棋子*/ int JudgeWinLine(int Order,struct point Cursor,int direction) {
struct point pos, const int testnum = 5;
switch(direction) { case 0:/*在水平方向*/ pos.x=Cursor.x-(testnum-1); pos.y=Cursor.y; dpos.x=1; dpos.y=0;
case 1:/*在垂直方向*/ pos.x=Cursor.x; pos.y=Cursor.y-(testnum-1); dpos.x=0; dpos.y=1;
case 2:/*在左下至右上的斜方向*/ pos.x=Cursor.x-(testnum-1); pos.y=Cursor.y+(testnum-1); dpos.x=1; dpos.y=-1;
case 3:/*在左上至右下的斜方向*/ pos.x=Cursor.x-(testnum-1); pos.y=Cursor.y-(testnum-1); dpos.x=1; dpos.y=1;
} count=0; for(i=0;i&testnum*2+1;i++)/*????????i&testnum*2-1*/ { if(pos.x&=0&&pos.x&=18&&pos.y&=0&&pos.y&=18) { if(gChessBoard[pos.x][pos.y]==Order) { count++; if(count&=testnum) return TRUE; } else count=0; } pos.x+=dpos.x; pos.y+=dpos.y; } return FALSE; }
/*移动光标*/ void MoveCursor(int Order,int press) { switch(press) { case PLAY1UP: if(Order==CHESS1&&gCursor.y&0) gCursor.y--;
case PLAY1DOWN: if(Order==CHESS1&&gCursor.y&18) gCursor.y++;
case PLAY1LEFT: if(Order==CHESS1&&gCursor.x&0) gCursor.x--;
case PLAY1RIGHT: if(Order==CHESS1&&gCursor.x&18) gCursor.x++;
case PLAY2UP: if(Order==CHESS2&&gCursor.y&0) gCursor.y--;
case PLAY2DOWN: if(Order==CHESS2&&gCursor.y&18) gCursor.y++;
case PLAY2LEFT: if(Order==CHESS2&&gCursor.x&0) gCursor.x--;
case PLAY2RIGHT: if(Order==CHESS2&&gCursor.x&18) gCursor.x++;
} gotoxy(gCursor.x+MAPXOFT,gCursor.y+MAPYOFT); } /*游戏结束处理*/ void EndGame(void) { textmode(C80); } /*显示当前行棋方*/ void ShowOrderMsg(int Order) { gotoxy(6,MAPYOFT+20); textcolor(LIGHTRED); if(Order==CHESS1) cputs("玩家1,出发!"); else cputs("玩家1,出发!"); gotoxy(gCursor.x+MAPXOFT,gCursor.y+MAPYOFT); } /*落子正确处理*/ void DoOK(void) { sound(500); delay(70); sound(600); delay(50); sound(1000); delay(100); nosound(); } /*检查用户的按键类别*/ int CheckKey(int press) { if(press==ESCAPE) return KEYEXIT;/*是退出键*/ else if ( ( press==PLAY1DO && gPlayOrder==CHESS1) || ( press==PLAY2DO && gPlayOrder==CHESS2) ) return KEYFALLCHESS;/*是落子键*/ else if ( press==PLAY1UP || press==PLAY1DOWN || press==PLAY1LEFT || press==PLAY1RIGHT || press==PLAY2UP || press==PLAY2DOWN || press==PLAY2LEFT || press==PLAY2RIGHT ) return KEYMOVECURSOR;/*是光标移动键*/ else return KEYINVALID;/*按键无效*/ }
Dev-c发现了一堆错误。。。
回复:16楼那玩意儿不是C/C++标准库的……是turboc自己弄的……用GDI吧
回复:17楼我看不懂这些术语,麻烦杰物同学详细说明,谢谢
好像有个谁把GDI还是opengl封装成tc下的函数形式弄了个库= =楼主可以去找找
回复:18楼简单不严谨的说就是一种“方言”
回复:19楼看不懂回复:20楼方言还是不懂回复:21楼那个我是随便弄得,可以无视这是DEV给出的编译报告: 编译器: Default compiler执行&& gcc.exe...gcc.exe "E:\C++\五子棋.c" -o "E:\C++\五子棋.exe"&&&& -I"D:\C++\DEV-CPP\include"&&& -L"D:\C++\DEV-CPP\Lib" E:\C++\五子棋.c:2:17: bios.h: No such file or directoryE:\C++\五子棋.c: In function `main':E:\C++\五子棋.c:91: warning: return type of 'main' is not `int' E:\C++\五子棋.c:175:14: warning: multi-character character constantE:\C++\五子棋.c: In function `Init':E:\C++\五子棋.c:184: error: `C40' undeclared (first use in this function)E:\C++\五子棋.c:184: error: (Each undeclared identifier is reported only onceE:\C++\五子棋.c:184: error: for each function it appears in.)E:\C++\五子棋.c:189: error: `BROWN' undeclared (first use in this function) E:\C++\五子棋.c:221:23: warning: multi-character character constantE:\C++\五子棋.c: In function `DrawCross': E:\C++\五子棋.c:221: warning: comparison is always false due to limited range of data typeE:\C++\五子棋.c:223: error: `LIGHTBLUE' undeclared (first use in this function)E:\C++\五子棋.c:224:7: warning: multi-character character constantE:\C++\五子棋.c:228:23: warning: multi-character character constantE:\C++\五子棋.c:228: warning: comparison is always false due to limited range of data typeE:\C++\五子棋.c:230: error: `LIGHTRED' undeclared (first use in this function)E:\C++\五子棋.c:231:7: warning: multi-character character constantE:\C++\五子棋.c:235: error: `GREEN' undeclared (first use in this function)E:\C++\五子棋.c:300:16: warning: multi-character character constantE:\C++\五子棋.c:301:12: warning: multi-character character constantE:\C++\五子棋.c:303:12: warning: multi-character character constantE:\C++\五子棋.c: In function `DoWin':E:\C++\五子棋.c:344: error: `RED' undeclared (first use in this function)E:\C++\五子棋.c:344: error: `BLINK' undeclared (first use in this function)E:\C++\五子棋.c:346:11: warning: multi-character character constantE:\C++\五子棋.c: In function `ChessGo':E:\C++\五子棋.c:363: error: `LIGHTBLUE' undeclared (first use in this function) E:\C++\五子棋.c:447:11: warning: multi-character character constantE:\C++\五子棋.c:451:11: warning: multi-character character constantE:\C++\五子棋.c:455:11: warning: multi-character character constantE:\C++\五子棋.c:459:11: warning: multi-character character constantE:\C++\五子棋.c:464:11: warning: multi-character character constantE:\C++\五子棋.c:468:11: warning: multi-character character constantE:\C++\五子棋.c:472:11: warning: multi-character character constantE:\C++\五子棋.c:476:11: warning: multi-character character constantE:\C++\五子棋.c: In function `EndGame':E:\C++\五子棋.c:487: error: `C80' undeclared (first use in this function) E:\C++\五子棋.c: In function `ShowOrderMsg':E:\C++\五子棋.c:494: error: `LIGHTRED' undeclared (first use in this function) E:\C++\五子棋.c:495:11: warning: multi-character character constantE:\C++\五子棋.c:523:35: warning: multi-character character constantE:\C++\五子棋.c:524:33: warning: multi-character character constantE:\C++\五子棋.c:539:3: warning: no newline at end of file 执行结束全是错误
没头文件&& 宏未定义LZ不要白费功夫了,等会链接的时候还是会出问题
回复:23楼怎么定义宏?
回复:24楼要么放弃这个程序,转投光明大道。要么就去找一个支持中文的TC吧。。。。不知道这个吧用TC++的多不多?多的话像TC的中文支持这种经典问题应该有人会
回复:25楼原来如此回复:26楼额,我们深圳有出台政策,初中毕业生取得一定分数后可以直接上5年制大学,我选的就是软件专业,再说了,这也是我的兴趣,希望支持,谢谢~ 回复:27楼我打了好久的,我不想放弃请问TC是什么,支持中文么?我马上下载
回复:28楼额 TC就是你用那玩意儿,太老了,趁早丢掉。VC6也不推荐Dev-C++你用着吧,用来学习还不错
登录百度帐号推荐应用本帖子已过去太久远了,不再提供回复功能。欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 2125 人关注过本帖
标题:Visual C++ 6.0 中编写的程序,编译,连接都正确,但在运行的时候中文显示的 ...
等 级:新手上路
&&已结贴√
&&问题点数:20&&回复次数:4&&&
Visual C++ 6.0 中编写的程序,编译,连接都正确,但在运行的时候中文显示的是乱码(程序能够运行,只是printf()函数里的中文变成了乱码)!请问如
Visual C++ 6.0 中编写的程序,编译,连接都正确,但在运行的时候中文显示的是乱码(程序能够运行,只是printf()函数里的中文变成了乱码)!请问如何解决?谢谢?
附件: 您没有浏览附件的权限,请
搜索更多相关主题的帖子:
来 自:黄山
等 级:黑侠
帖 子:269
专家分:527
你的VC不支持中文??
。。。!!!)))000
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
跟 VC 没关系。是你的 cmd 内码用的不是中文。
等 级:新手上路
以下是引用voidx在 23:42:13的发言:
跟 VC 没关系。是你的 cmd 内码用的不是中文。
来 自:瓮安
等 级:论坛游侠
帖 子:88
专家分:152
我也遇见过相同的问题
&&&---------------天道刚健,你不自强谁来帮你---------------
版权所有,并保留所有权利。
Powered by , Processed in 0.058362 second(s), 7 queries.
Copyright&, BCCN.NET, All Rights Reserved

我要回帖

 

随机推荐