C语言里怎么输入和显示中文字符

dbl36269927 2005-06-13 12:38:24
C语言里怎么输入和显示中文字符?
比如输入 “你好”,屏幕显示“你好”。
请把把程序写出来,谢谢
...全文
1242 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ispovo 2005-06-13
  • 打赏
  • 举报
回复
Win 2000/XP用 CMD 才可以支持中文,如果是其他版本就要用UCDOS。

如果你用的是TC就要先运行UCDOS再运行TC才能支持中文,如果是VC则可以直接显示中文!


#include <stdio.h>

int main()
{
printf("你好\n");
}
angus_forlove 2005-06-13
  • 打赏
  • 举报
回复
如果是在小型软件中,而且这个软件需要显示的文字也不大,那么完全是没有必要弄上一个字库的大物来着的。
pgy8288 2005-06-13
  • 打赏
  • 举报
回复
最好使用汉字字库,方便
tfq 2005-06-13
  • 打赏
  • 举报
回复
win-tc有的。
我就恼火它没单步执行这些功能。
foochow 2005-06-13
  • 打赏
  • 举报
回复
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char str[500];
cin>>str;
int p=strlen(str);
cout.write(str,p);
cout<<endl;
return 0;
}
Feather2005 2005-06-13
  • 打赏
  • 举报
回复
晕,《唯C世界》有下的,中文win-tc.
sky911911 2005-06-13
  • 打赏
  • 举报
回复
楼上说的没找到 嘿嘿!
tfq 2005-06-13
  • 打赏
  • 举报
回复
win-tc可以。有个菜单超级工具集,选中文dos环境运行
angus_forlove 2005-06-13
  • 打赏
  • 举报
回复
上面例子,因为要方便性以及便于理解,同时也因为临时弄的,所以效率并不高;
此种方法,可以应付小程序中需要用到的字体;
如果想得到更好的效率以及便于维护,可以进一步修改;(改用指针,分配内存,专门设计程序块来实现)
angus_forlove 2005-06-13
  • 打赏
  • 举报
回复
#include "Conio.h"
#include "graphics.h"
#define closegr closegraph

void drawmat(char *mat,int matsize,int x,int y,int color)
/*字模指针、点阵大小、起始坐标(x,y)、颜色*/
{
int i,j,k,n;
n=(matsize-1)/8+1;
for(j=0;j<matsize;j++)
for(i=0;i<n;i++)
for(k=0;k<8;k++)
if(mat[j*n+i]&(0x80>>k))
putpixel(x+i*8+k,y+j,color);
}

void initgr(void)
/* 以下实现BGI初始化 */
{
int gd = DETECT, gm = 0;
registerbgidriver(EGAVGA_driver);/* 注册BGI驱动,为了独立性强*/
initgraph(&gd, &gm, "");
}

int main(void)
{
char ni16S[]={
/* 以下是 '你' 的 16点阵宋体 字模,32 byte */
0x09,0x00,0x09,0x80,0x11,0x04,0x13,0xFE,
0x22,0x04,0x34,0x48,0x68,0x40,0xA2,0x50,
0x23,0x48,0x22,0x48,0x24,0x44,0x24,0x46,
0x28,0x44,0x21,0x40,0x20,0x80,0x00,0x00,
};
char hao32K[]={
/* 以下是 '好' 的 32点阵楷体_GB2312 字模,128 byte */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0x80,0x00,0x00,0x00,0xC0,0x01,0x80,
0x00,0xC0,0x0F,0xE0,0x00,0xC1,0xF9,0xE0,
0x00,0xC0,0x01,0x80,0x00,0x80,0x03,0x00,
0x01,0x80,0x02,0x00,0x01,0x8C,0x14,0x00,
0x01,0x8C,0x08,0x00,0x01,0x1C,0x0C,0x00,
0x07,0xF8,0x07,0xFE,0x7F,0x18,0xFF,0xC0,
0x71,0x1F,0xC6,0x00,0x03,0x10,0x02,0x00,
0x03,0x30,0x02,0x00,0x01,0xB0,0x03,0x00,
0x00,0xE0,0x03,0x00,0x00,0x70,0x03,0x00,
0x00,0xF8,0x03,0x00,0x01,0x98,0x03,0x00,
0x06,0x0C,0x02,0x00,0x0C,0x04,0x06,0x00,
0x10,0x00,0x3E,0x00,0x00,0x00,0x1E,0x00,
0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
initgr(); /* 初始化BGI */
drawmat(ni16S,16,150,150,35); /*调用drawmat,第一行为“你”,第二行为“好” */
drawmat(hao32K,32,168,141,35);
getch(); /* 暂停一下,看看前面绘图代码的运行结果 */
closegr(); /* 恢复TEXT屏幕模式 */
return 0;
}
/* 在TC2.0中实现中文一般有三种方式:第一种,如楼上所说的用UCDOS等中文平台,但很有可能有兼容性问题,同时缺少了独立性,很浪费资源等等;第二种,就是你自己写一个程序,载入字体字模,这个一般没有兼容性问题,也独立了,但同样很浪费资源,又还很麻烦(有可能一个小程序也要用上M来实现);第三种,也就是上面例子中,是我建立的模型;为了方便理解,我用了二种宋体和楷体,字模大小分别是16和32.(这是可以用一些字模工具提取的,当然你也可以自己写。)
*/

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧