c语言中怎样获取内码

GunLi 2001-04-21 06:01:00
各位亲爱的大侠,我是对c语言完全无知的小弟弟,请哪位大侠给个完整程序。
能提取“物理系邮专”五字的汉字内码,每个字的内码间隔一个空格,存到一个文本文件里
在字库里面读出“物理系邮专”的区位码,存到一个文本文件里

再读这两个文本文件都转回那五个字输出

(dos版本)
完整程序!!(我一个朋友的作业)
...全文
639 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
GunLi 2001-05-09
  • 打赏
  • 举报
回复
谢谢大侠,收到了,可惜我最多只能给出34分。不过大侠身手过人,哪在乎这小小几分
windindance 2001-05-08
  • 打赏
  • 举报
回复
已经给你了,收到了吗?
GunLi 2001-05-07
  • 打赏
  • 举报
回复
谢谢你,如果行,马上送分
GunLi 2001-05-07
  • 打赏
  • 举报
回复
紧急求助,还有谁会的?
GunLi 2001-05-07
  • 打赏
  • 举报
回复
land_warrior(斧)大侠:#include "cover2.c"是啥?编译不了的哦。你的c是什么版本?
land_warrior 2001-05-07
  • 打赏
  • 举报
回复
我写过一个在DOS环境下不挂汉字系统打印汉字的东东,里面有实现字模提取和内码到区位码转换的代码,我贴出来你自已看吧
#include "graphics.h"
#include "stdio.h"
#include "cover2.c"

int mul(int i,int j)
{int k,score=i;
if (j==0) return(1);
else{ for(k=1;k<j;k++)
score=score*i;
return(score);
}
}


main()
{
FILE *fp,*ft;
char cmod[32],point;
int j,i,k,x,y;
long int ch,s,u;
long int v;
if((fp=fopen ("hzk16","rb"))==NULL)
{printf("cannot open charlib file\n");return;}
else
{
ch='汪';
s=ch&255;
u=(ch&65280)>>8;
v=((s-161)*94+(u-161))*32;
fseek(fp,v,0);
for (i=0;i<32;i++)
cmod[i]=fgetc(fp);
}

InitGraph();
setfillstyle(1,7);

for (i=0;i<16;i++)
{
x=100;y=100+i;
for (k=0;k<2;k++)
for (j=0;j<8;j++)
{
point=0;
point=cmod[i*2+k]&mul(2,7-j);
if (point) putpixel(x,y,3);
x++;}
}
/* Quit(); */
}

GunLi 2001-05-06
  • 打赏
  • 举报
回复
windindance(风之舞)大侠啊,您还没回来吗?真是望穿秋水拉
GunLi 2001-04-30
  • 打赏
  • 举报
回复
??咦,没人再说啦?
GunLi 2001-04-26
  • 打赏
  • 举报
回复
有人给我这东东,我不太懂,大家帮忙看看:(拷出来看,行太长了,)

一个汉字占用两个字节,用 unsigned char类型数组来取汉字
一般汉字(GB2312) 的每个字节均满足大于0xa0, 而大字符集的汉字不一定
满足此条件。

下面有段代码:自己慢慢看吧

if( *hpchDicBuffer>=0xa0 ){
if( *hpchDicBuffer==(unsigned char)lpchEdit[0]) {
hpchDicBuffer++;
if((int) *hpchDicBuffer==0 ) goto ENDSEARCH;
if((*hpchDicBuffer>=0xa0) &&
(*hpchDicBuffer== (unsigned char)lpchEdit[1])) {
int i;
for(i=0;i<60;i++) lpchStatic1[i]='\0';
i=0;
while(1){
hpchDicBuffer++;
if((int) *hpchDicBuffer==0) goto ENDSEARCH;
if( (int)*hpchDicBuffer=='|' ) {
if(intCurrentInMethod ==IDC_IN_METHOD_QP||
intCurrentInMethod ==IDC_IN_METHOD_SP_LIU||
intCurrentInMethod ==IDC_IN_METHOD_SP_WINDOWS||
intCurrentInMethod ==IDC_IN_METHOD_SP_DEF||
intCurrentInMethod ==IDC_IN_METHOD_SP_CSTAR||
intCurrentInMethod ==IDC_IN_METHOD_SP_ABC||
intCurrentInMethod ==IDC_IN_METHOD_JP) {
lpchStatic1[i]='|';
i++;
hpchDicBuffer++;
}else{
lpchStatic1[i]=' ';
i++;
lpchStatic1[i]=' ';
i++;
lpchStatic1[i]=' ';
i++;
lpchStatic1[i]=' ';
i++;
hpchDicBuffer++;
}
if((int) *hpchDicBuffer==0)
goto ENDSEARCH;
}else if( *hpchDicBuffer>=0xa0 ) break;
if(intCurrentInMethod ==IDC_IN_METHOD_QP||
intCurrentInMethod ==IDC_IN_METHOD_SP_LIU||
intCurrentInMethod ==IDC_IN_METHOD_SP_WINDOWS||
intCurrentInMethod ==IDC_IN_METHOD_SP_DEF||
intCurrentInMethod ==IDC_IN_METHOD_SP_CSTAR||
intCurrentInMethod ==IDC_IN_METHOD_SP_ABC||
intCurrentInMethod ==IDC_IN_METHOD_JP) {
if((unsigned char)*hpchDicBuffer!='1' &&
(unsigned char)*hpchDicBuffer!='2' &&
(unsigned char)*hpchDicBuffer!='3' &&
(unsigned char)*hpchDicBuffer!='4' ){
lpchStatic1[i]= *hpchDicBuffer;
i++;
}
}else {
lpchStatic1[i]= *hpchDicBuffer;
i++;
}
}
Static_Of_Edit->SetWindowText(lpchEdit);
if(intCurrentInMethod ==IDC_IN_METHOD_QP||
intCurrentInMethod ==IDC_IN_METHOD_SP_LIU||
intCurrentInMethod ==IDC_IN_METHOD_SP_WINDOWS||
intCurrentInMethod ==IDC_IN_METHOD_SP_DEF ||
intCurrentInMethod ==IDC_IN_METHOD_SP_CSTAR||
intCurrentInMethod ==IDC_IN_METHOD_SP_ABC){
QpToSp() ;
return ;
}
if(intCurrentInMethod ==IDC_IN_METHOD_JP){
QpToJp() ;
return ;
}

Static1->SetWindowText(lpchStatic1); //将结果写入文本框中

char szTemp[100], szTemp2[100];
myComboBox_History->GetLBText(0,szTemp);
if((unsigned char)szTemp[0]!=(unsigned char)lpchEdit[0] ||
(unsigned char)szTemp[1]!=(unsigned char)lpchEdit[1] ){

lstrcpy(szTemp2,lpchEdit);
lstrcat(szTemp2, " "); //保存历史记录
lstrcat(szTemp2, lpchStatic1); //保存历史记录
SaveHistory(szTemp2);


NowCan 2001-04-26
  • 打赏
  • 举报
回复
看看
GunLi 2001-04-26
  • 打赏
  • 举报
回复
谢谢您.万分感激
GunLi 2001-04-25
  • 打赏
  • 举报
回复
Oh.
(GunLi焦急地期盼着你快回来)
你在哪上班的?
windindance 2001-04-25
  • 打赏
  • 举报
回复
南通。5月7号左右给你。
windindance 2001-04-24
  • 打赏
  • 举报
回复
ah,我现在出差,请等一段时间。:(
GunLi 2001-04-24
  • 打赏
  • 举报
回复
天哪!!!
GunLi 2001-04-23
  • 打赏
  • 举报
回复
亲爱的windindance(风之舞)大侠:
您好,真感谢您的关注。
其实我也不是很理解题意,我想是这样的:
提取“物理系邮专”五字的汉字内码,每个字的内码间隔一个空格,存到一个文本文件
里。并由此计算“物理系邮专”的区位码,存到另一个文本文件里。(两个文件名由用户指定
提示用户输入文件名,读该文件,把内容显示出来,再转回那五个字显示出来。(就是说,如果我用“一”字的内码存到该文件,显示内容后就显示“一”) 再提示用户输入另一个文件名……
ctrl+X结束该程序
大概就是这样了,请大侠略花10分钟,轻松搞定!感激不尽。
我给你发了邮件但不成功,我的E-mail是 liganx@263.net
windindance 2001-04-22
  • 打赏
  • 举报
回复
在字库里面读出“物理系邮专”的区位码,存到一个文本文件里
是什么意思?
再读这两个文本文件都转回那五个字输出
是什么意思?
什么时候要?
iswind@soim.net
GunLi 2001-04-22
  • 打赏
  • 举报
回复
windindance(风之舞)大侠,麻烦您加头加尾,给个完整源程序吧
windindance 2001-04-21
  • 打赏
  • 举报
回复
char s[11] = "物理系邮专";
for (int i=0; i<5; i++)
printf("%d ",s[i*2]<<8+s[i*2+1]);
printf("\n");
GunLi 2001-04-21
  • 打赏
  • 举报
回复

69,369

社区成员

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

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