大小写转换

他大爷的, 前2天写了一个函数, 回过头发现一堆问题。。

 

函数的功能是将一个串中的大写字母转为小写, 串可能包含GBK字符。

GBK是用2个字节表示一个汉字,其中第一个字节大于0x80

 

char * lower(const char *src, char *dst) { if(src == 0) return 0; unsigned char c; const char *h = src; char *d = dst; while(c = *h) { if(c >= 'A' && c <= 'Z') *d++ = c; else if(c > 0x80 && *(h+1) > 0) { *d++ = c; *d++ = *(h+1); } else *d++ = c; ++h; } *d = 0; return dst; }

 

 

杯具了:

1 使用char与常数0x80比大小。。。

2 最后的串尾0没有添加

3 指针移动还可能写漏了

4 函数的signature、附加值不高

 

 

深思熟虑

你可能感兴趣的:(c,DST)