主题:求指导
void utf_8(char *str)
{
int i = 0;
while(str[i]!='\0')
{
if( (str[i]&0xc0)==0x00)
{
i+=1;
}
if( (str[i]&0xe0)==0xc0)
{
i+=2;
}
if( (str[i]&0xf0)==0xe0)
{
i+=3;
}
if( (str[i]&0xf8)==0xf0)
{
i+=4;
}
if( (str[i]&0xfc)==0xf8)
{
i+=5;
}
if( (str[i]&0xfe)==0xfc)
{
i+=6;
}
}
int j = i;
i = 0;
char *tmp = (char*)malloc(j+1);
memset(tmp,j+1,0);
tmp[j]='\0';
while(str[i]!='\0')
{
if( (str[i]&0xc0)==0x00)
{
tmp[j-1] = str[i];
j-=1;
i+=1;
}
if( (str[i]&0xe0)==0xc0)
{
tmp[j-1] = str[i];
j-=2;
i+=2;
}
if( (str[i]&0xf0)==0xe0)
{
tmp[j-1] = str[i];
j-=3;
i+=3;
}
if( (str[i]&0xf8)==0xf0)
{
tmp[j-1] = str[i];
j-=4;
i+=4;
}
if( (str[i]&0xfc)==0xf8)
{
tmp[j-1] = str[i];
j-=5;
i+=5;
}
if( (str[i]&0xfe)==0xfc)
{
tmp[j-1] = str[i];
j-=6;
i+=6;
}
}
*str = *tmp; // tmp=321,而str=323;
free tmp;
}
为什么 在我输入123的时候 已经反过来了,可在赋值的时候 str=323
{
int i = 0;
while(str[i]!='\0')
{
if( (str[i]&0xc0)==0x00)
{
i+=1;
}
if( (str[i]&0xe0)==0xc0)
{
i+=2;
}
if( (str[i]&0xf0)==0xe0)
{
i+=3;
}
if( (str[i]&0xf8)==0xf0)
{
i+=4;
}
if( (str[i]&0xfc)==0xf8)
{
i+=5;
}
if( (str[i]&0xfe)==0xfc)
{
i+=6;
}
}
int j = i;
i = 0;
char *tmp = (char*)malloc(j+1);
memset(tmp,j+1,0);
tmp[j]='\0';
while(str[i]!='\0')
{
if( (str[i]&0xc0)==0x00)
{
tmp[j-1] = str[i];
j-=1;
i+=1;
}
if( (str[i]&0xe0)==0xc0)
{
tmp[j-1] = str[i];
j-=2;
i+=2;
}
if( (str[i]&0xf0)==0xe0)
{
tmp[j-1] = str[i];
j-=3;
i+=3;
}
if( (str[i]&0xf8)==0xf0)
{
tmp[j-1] = str[i];
j-=4;
i+=4;
}
if( (str[i]&0xfc)==0xf8)
{
tmp[j-1] = str[i];
j-=5;
i+=5;
}
if( (str[i]&0xfe)==0xfc)
{
tmp[j-1] = str[i];
j-=6;
i+=6;
}
}
*str = *tmp; // tmp=321,而str=323;
free tmp;
}
为什么 在我输入123的时候 已经反过来了,可在赋值的时候 str=323