字符串截断函数
各位,大虾!
小弟这厢有理啦。最近写了一个程序。遇到了一个问题:
屏幕宽度为21个字符宽。将一个字符串(长度不固定,可能少于21个字符,也可能多于21个,这里面包括中文汉字),
要求将这个字符串截断后,在屏幕上打印出来。在截断时,要求能够连续截断(截断后的字符串长度可以由一个参数确定),且中文汉字,不能被截断。
最好用C语言写出。我手中有一个函数,但不知为什么,有时打印后老是显示乱码。
由于是第一次发帖,也不知道怎么悬赏,大家可以告诉我,我会落实的。
//--------------------------------------------
//字符串折行函数
//汉字占两个字节,并且每个字节的最高位为“1”,所以都是负数
//name 为传递过来的字符串,长度不固定。store 为截取了一个长度为len 后的字符串。len 为要截取的长度。
void split_name( char * name , char * store , int len )
{
int i ,j , m ,n ;
char temp[251]={0};
i = 0 ;
m = name[i];
while( i < len && m!=0 )
{
n = name[i+1];
if ( m < 0 && n < 0 )
i = i + 2 ;
else
i = i + 1 ;
m = name[i];
}
i = i > len ? i-3 :i-1;
memset( store , 0 , sizeof( store ));
for(j=0 ;j<i+1 ;j++)
{
store[j]=name[j];
}
for(j=0 ;name[i+1]!='\0';i++)
{
temp[j++]=name[i+1];
}
for(j=0 ;temp[j]!='\0';j++)
{
name[j]=temp[j];
}
}