新手提问:请大家帮忙看看这个函数出错在哪里?
我刚开始学VC,什么都不懂,下面只是仿造另外一个函数写的,但是结果不对,我也不会调试,就请大家帮忙修改一下吧,我会努力接着学的
int CSCommTestDlg::String2Hzk(CString str, CByteArray &senddata)
{
int highdata,lowdata,i;
int hexdatalen=0;
FILE *fp;
char buffer[32];
unsigned long offset;
int len=str.GetLength();
senddata.SetSize(len*16);
fp=fopen("HZK16","rb");
int nCurPos=0;
while(nCurPos<len)
{if(str[nCurPos]==' ')
{
nCurPos++;
continue;
}
highdata=str[nCurPos]-0xa0;
nCurPos++;
lowdata=str[nCurPos]-0xa0;
offset=(94*(highdata-1)+(lowdata-1))*32L;
fseek(fp,offset,SEEK_SET);
fread(buffer,32,1,fp);
for(i=0;i<32;i++)
senddata[hexdatalen+i]=buffer[i];
hexdatalen+=32;
nCurPos++;
}
senddata.SetSize(hexdatalen);
return hexdatalen;
}
这是一个ASSIC码转换成字型码的函数,可是我送出"你好吗" 三个字,
字型数据为00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 E0 71 B0 33 18 33 18 33 18 33 18 31 B8 30 F8 30 18 33 18 31 B6 78 E6 00 00 00 00 00 00 10 08 24 F4 2C 84 44 82 44 82 44 E2 44 12 44 12 44 12 44 92 44 92 2E 64 20 04 10 08 00 00
而且奇怪的是如果只输入一个汉字,为什么32B全是0呢?
真的很感谢大家帮我看看,谢谢谢谢
问题点数:100、回复次数:5Top
1 楼jmlt1983(Harper)回复于 2004-09-04 17:49:24 得分 0
HZK16 放哪的??
很有可能是未打开吧?Top
2 楼hugoliang(鱼)回复于 2004-09-04 19:38:26 得分 0
我试过了,打开了,因为如果我把字库文件移走,程序会报错,我这个函数原来在C下用过,可是不知道为什么放到VC下就不行了:(
帮帮忙吧,谢谢Top
3 楼keiy()回复于 2004-09-04 20:02:26 得分 100
...
highdata=(unsigned char)str[nCurPos]-0xa0;
nCurPos++;
lowdata=(unsigned char)str[nCurPos]-0xa0;
offset=(94*(highdata-1)+(lowdata-1))*32L;
...
Top
4 楼flyelf(空谷清音)回复于 2004-09-04 20:02:36 得分 0
还是跟踪一下吧Top
5 楼hugoliang(鱼)回复于 2004-09-04 20:33:18 得分 0
怎样跟踪,我是很想单步走一下,可是刚学VC,不知道怎么弄,给我讲讲好吗?谢谢Top




