开发者社区> 问答> 正文

把中英文字符串的大写字母转化为小写的问题:报错

这段代码运行是可以的,但是,有几个地方不是很明白,请朋友指点下,谢谢。

标红的地方,我不是很明白,从程序运行结果来看,是跳过中文的转换,只转换字母,但是能给我解释下吗?

我自己先分析下:

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;
        }
    }
}

}

 

展开
收起
kun坤 2020-06-14 09:50:16 530 0
0 条回答
写回答
取消 提交回答
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载