限制汉字字母数字混合字符显示数目的简单小程序C

今天为了使屏幕的文字左对齐,  特意写的限制混合字符显示数量的小程序。

先放上代码吧。

#include <stdio.h>
#define DISPLAY_NAME_WORD_NUM 5
#define LENGTH 20



 static void LimitDisplayLength(char* text)
{
	int i,count;
	i=0;
	count=1;
	while((text[i]!='\0')&&(count<=DISPLAY_NAME_WORD_NUM))                        
	{	

	if((text[i]>>8)==0)                                     //最高位为1,说明是汉字 跳两位
		i=i+1;
	else
		i=i+2;
	count++ ;
	printf("i=%d\n",i);
	printf("count=%d\n",count);
	}	

	if(text[i]!='\0')
	{
		text[i]='\0';

	}
	while(count<=DISPLAY_NAME_WORD_NUM)
	{
		text[i++]='*';
		count++;
	}
    text[i]='\0';
}

int main()
{
    char string[LENGTH]="da啦啦啦啦d";
	char lad[LENGTH]="啦";
	LimitDisplayLength(string);
	printf("%s\n",string);
	LimitDisplayLength(lad);
	printf("%s",lad);
}

思想是这样子的:限制文字的数目为N,如果多余X个,则cut掉N-X个;如果少于N个,则填充空格。

由于输入的文字可能存在汉字和字母或是数字的混合,所以主要问题是判断当前字节是字母还是汉字。

代码很简单就不说了。唯一的是测试 当前字节是不是汉字这块..网上找得都是坑爹的..没几个可以实现的.....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值