c语言字符串 字符数组问题(工程中的一个难题)

时间:2008-05-26 11:10:13   来源:论坛整理  作者:  编辑:chinaitzhe
排列点阵数据的规定:对要显示的一段话,首先要做的是将该段话分为8个字一组(汉字或全角字符为1,ASC字符或半角字符为0.5 ),当出现7.5字时,而下一个字符又是全角,而不是半角时,这时候就要人为的加个不显示的半角来填补,保证没一组是8个全角的字。下面有个排列的图示:(16行16列)
A0 A1 B0 B1 ... G0 G1 H0 H1
A2 A3 B2 B3 ... G2 G3 H2 H3
..................

A28 A29 B28 B29... G28 G29 H28 H29
A30 A31 B30 B31... G30 G31 H30 H31
以每组8个字为例,A—H,表示该组第1个汉字到第8个汉字,每个字母的下标表示该汉字的第几个点阵数据,2个0-15表示要设个16X16的二维数组
问题:现在定义了一个buff[16][16]
并且得到了查到了每个汉字的点阵数据buffer[32];(假设是一个汉字)
如何按规则赋值到二维数组里面去了?
程序如下:
#include <stdio.h>
char buff[16][16];//存储8个字的点阵数据

void puts16(char *s)//只处理8个字
{

register int i,j,k;
FILE *fpa,*fph;
char buffera[16],bufferh[32];
unsigned char qh,wh;
unsigned long location;
fpa=fopen("asc16","rb");
fph=fopen("HZK16","rb");
int num=0;
while(*s&&num <8)
{

if(*s>0)
{
fseek(fpa,(*s)*16,SEEK_SET);
fread(buffera,1,16,fpa);// 得到的每个半角字的点阵数据在这
s ;
}
else
{

qh=*s-0xa0; //第一个字节
wh=*(s 1)-0xa0; //第二个字节
location=(94*(qh-1) (wh-1))*32L;
fseek(fph,location,SEEK_SET);
fread(bufferh,32,1,fph); //得到每个字的点阵数据在这bufferh
s =2;
}
num ;
}
fclose(fpa);
fclose(fph);
}

网友回复:沙发,顺便接分!哈哈!
网友回复:楼主,我有相关代码,正好之前做过,==给你找找哈!
网友回复:http://download.csdn.net/source/424562
网友回复:楼主不在?有图(visio可以打开),但是楼主不在,没法传了。我发布资源了,楼主假如想要的话,去看看。
http://download.csdn.net/source/424562
网友回复:楼上的能否给传一份代码?syzz-lishun@163.com
谢谢!!
网友回复:什么呀
关键字:语言,字符串,字符,数组,问题,

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面