下面是我在eVC中读取汉字点阵信息的代码:
1 unsigned char chrpoint[16][2];
2 /* 获得区码与位码 */
3 int i=unsigned char(htext)-0xa0;
4 int j=unsigned char(ltext)-0xa0;
5 for(int m=0;m<16;m++)
6 for(int n=0;n<2;n++)
7 chrpoint[m][n]=0;
8 fseek(HZK,0,SEEK_SET);
9 fseek(HZK,(94*(i-1)+(j-1))*32l,SEEK_SET);
10 fread(chrpoint,32,1,HZK);
11 for(int y=0;y<16;y++)
12 {
13 pointArray[y][index]=TurnAroundByte(chrpoint[y][0]);
14 pointArray[y][index+1]=TurnAroundByte(chrpoint[y][1]);
15 }
在第10行中读取出来的点阵信息也就是chrpoint的内容全都不为0x00,可是到了第13、14行取其值的时候,chrpoint数组中的后一半的内容却全都变成了0x00。请问这是什么原因?请各位兄台帮帮忙,再搞不定,我的饭碗就保不住了!
1 unsigned char chrpoint[16][2];
2 /* 获得区码与位码 */
3 int i=unsigned char(htext)-0xa0;
4 int j=unsigned char(ltext)-0xa0;
5 for(int m=0;m<16;m++)
6 for(int n=0;n<2;n++)
7 chrpoint[m][n]=0;
8 fseek(HZK,0,SEEK_SET);
9 fseek(HZK,(94*(i-1)+(j-1))*32l,SEEK_SET);
10 fread(chrpoint,32,1,HZK);
11 for(int y=0;y<16;y++)
12 {
13 pointArray[y][index]=TurnAroundByte(chrpoint[y][0]);
14 pointArray[y][index+1]=TurnAroundByte(chrpoint[y][1]);
15 }
在第10行中读取出来的点阵信息也就是chrpoint的内容全都不为0x00,可是到了第13、14行取其值的时候,chrpoint数组中的后一半的内容却全都变成了0x00。请问这是什么原因?请各位兄台帮帮忙,再搞不定,我的饭碗就保不住了!
解决方案 »
- C++ 如何将剪贴板中的数据按照特定的字符截取一个个的设入到Excel单元格中
- com 对象的接口函数无法调用到问题
- 用过MIL函数库的进来帮下忙好么?关于图像缓存区的图像存储到一个二维数组
- 小弟刚学 GOOGLE没弄明白 特此请教 一维数组数据结构的模板类
- 怎么使用现成的库?
- 初来的新手:关于合并文件的问题,急
- 关于CListCtrl::InsertGroup的问题
- 一个小问题,关于可编辑SubItemr的CListCtrl
- 如何取得屏幕外的点的信息?
- 如何动态的将Popup的菜单追加上另一部分?
- 小问题,有什么好方法可以将CString转换为WCHAR。
- 请问为什么CTreeCtrl不能正常收到WM_CONTEXTMENU消息?
验证方法,把charpoint定义的大一些,看是否还变成0x00
这段程序并不是每个汉字的点阵信息都变成,而是某些汉字就会出现这种情况,但是很少数,目前会出现这种情况的汉字有:家,认,科,技,给,挥,弱,编,者,按,扩,抬,话,甚,格,批,投,缓,等!
index是传过来的参数,是pointArray的列下标,这个绝对没错!
将 fread(chrpoint,32,1,HZK);
改成
int nCount=fread(chrpoint,sizeof(unsigned char),32,HZK);
检查nCount是不是32.2. 检查TurnAroundByte()函数,看起来它好像是传值的。由于没有源程序,所以不能保证你不是使用的call-by-reference.