- 论坛徽章:
- 0
|
例如:
“我在正在TEST my application请稍候 ”
取27个字符=“我在正在TEST my application”
取28个字符=“我在正在TEST my application”
取29个字符=“我在正在TEST my application请”
我写的如下,欢迎大家提供好的算法!
BOOL IsChineseChar(const char Char)
{
if(Char & 0x80)
{
return (TRUE);
}
else
{
return (FALSE);
}
}
int ChineseCharLimit(char *pszBuffer,int iMaxLenth)
{
int i ={0};
char *pszSrc ={0};
char *pszChr ={0};
pszSrc = (char *)pszBuffer;
pszChr = NULL;
for(i=0;i<iMaxLenth;i++)
{
if(pszSrc==0)
{
return (0);
}
else if(IsChineseChar(pszSrc))
{
pszChr = &pszSrc;
i++;
}
}
if((pszChr == NULL) || ((int)((&pszChr[1]) - pszBuffer) < iMaxLenth))
{
pszBuffer[iMaxLenth]=0;
return (1);
}
else
{
pszChr[0]=0;
pszChr[1]=0;
return (2);
}
}
void main()
{
szTmp[128];
strcpy( szTmp,"我在正在TEST my application请稍候" );
ChineseCharLimit( szTmp,27 );
printf( "取27个字符=%s",szTmp );
strcpy(szTmp,"我在正在TEST my application请稍候" );
ChineseCharLimit( szTmp,28 );
printf("取28个字符=%s",szTmp);
strcpy( szTmp,"我在正在TEST my application请稍候" );
ChineseCharLimit( szTmp,29 );
printf( "取29个字符=%s",szTmp );
}
[ 本帖最后由 ChinaDream 于 2006-1-14 16:50 编辑 ] |
|