汉字自动换行C代码

减小字体 增大字体作者:沈乐君  来源:本站原创  发布时间:2009-06-18 09:07:34

网上搜半天都没有现成的源代码,而且aspjpeg的.Canvas.PrintTextEx对包含汉字的字符串换行功能完全无效,被迫写了本程序。该程序可对文本文件中的中文字符进行自动换行,主要解决了2个问题:1是不对汉字进行截断,不会造成汉字乱码;2是原来文本中的回车换行如何处理。时间仓促写得不好,高手莫笑。本程序的例子是在图片中试题的截断显示,点击这里

程序设计依据:GB2312的每一个汉字由两个字节构成,其中每一个字节的范围都在0xA1-0xFE。使用方法:函数参数str是需要换行的字符串,len是自动换行的最大长度。

#define MAX_LINE_BUF 4096
char g_src[MAX_LINE_BUF],g_dst[MAX_LINE_BUF];
char * add_return(char * str, int len)
{
	unsigned char * pu;
	char * s, *d;
	g_dst[0]=0;
	s=str;d=g_dst;memset(g_dst,0,MAX_LINE_BUF);
	for(int i=0;i<strlen(str);i++)
	{
		int j,return_now=0;
		for(j=0;j<len && *s!=0;)
		{
			if(*(s)=='\r')
			{
				s++;j++;
				continue;
			}
			else if(*(s)=='\n')
			{
				*d=*s;j++;s++;d++;
				return_now=1;
				continue;
			}
			*d=*s;
			pu=(unsigned char *)s;
			// 判断是否是汉字,是汉字则拷贝双字节
			if(*pu>=0xA1 && *pu<=0xFE)
			{
				j++;
				s++;d++;
				*d=*s;
			}
			j++;s++;d++;
		}
		i+=j;
		if(!return_now)
		{
			*d='\n';d++;
		}
	}
	return g_dst;
}
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)
   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

用户名:   验证码:

分 值:100分 85分 70分 55分 40分 25分 10分 1分

内 容:

      若文章有错误,请将右边打钩通知管理员

关于本站 - 友情连接 - 网站地图 - 我要留言