这段代码运行是可以的,但是,有几个地方不是很明白,请朋友指点下,谢谢。
标红的地方,我不是很明白,从程序运行结果来看,是跳过中文的转换,只转换字母,但是能给我解释下吗?
我自己先分析下:
0x80 应该是16进制写法,转为10进制应该是128,转为二进制应该是1000 0000
*piterator & 0x80 是位与运算,最后结果应该就是*piterator,这能说明啥呢?感觉和跳过中文没啥关系啊
#include<stdio.h>
#include<stdlib.h>
void change_word(char*);
int main(void){
char p[]="你好,I LOVE YOU";
change_word(p);
printf("out:%s\n",p);
return 1;
}
void change_word(char *szWord)
{
for (unsigned char *piterator = szWord; *piterator != '\0'; piterator++)
{
if ((*piterator >= 'A') && (*piterator <= 'Z')) {
//如果是大写字母
*piterator += 32;
}else if ((*piterator & 0x80)){
if (*(piterator+1) == '\0') {
//if the second character is null character
}else {
++piterator;
}
}
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。