发新话题
打印

strlen对汉字操作的问题?

strlen对汉字操作的问题?

为啥
; R. m; N/ i/ V9 Jchar *s="CDROM驱动器";5 u/ M4 V3 \+ X: E7 F6 p: S$ L
strlen(s)返回14?如何能正确的到s的长度?      

TOP

跟编码方式有关      
上帝说,有问题,找GOOGLE 写程序是很神圣的事情!同样只是装系统,卖菜的大娘会的事情不见得就跟卖菜一样了。

TOP

版主的话真有意义,其实等于不说!      

TOP

人家帮你了你要认真分析一下,不要乱说.版主说的很有道理呀.一般来说汉字占两个字节,所以"CDROM驱动器"$ ~- U, _& S- E
长度应该为11,而且我在windows 2000 professional,MS visual C++ 6.0上调试过的确长度为11,我不知道你在哪儿调试的.      

TOP

换句话说,为什么你说得到的长度不对?      
上帝说,有问题,找GOOGLE 写程序是很神圣的事情!同样只是装系统,卖菜的大娘会的事情不见得就跟卖菜一样了。

TOP

我这里也是11 , LZ可以跟踪一下,看看内存里到底存放的是什么      

TOP

这让我联想到我用Emacs读RSS的一个情况。
9 ?8 q9 [7 O! s0 I" k" l中文的频道名在组列表中总是显示为乱码,查到.newsrc.eld文件中就是乱码。, q  G1 {: o7 `- R. V
进一步查看2进制值,发现在每一个字(GB码)的前面都多了一个字节,其值为0x91。* L) \+ M+ W3 K; N$ L
你这里恐怕也是这样多了3个字节。换一个文本编辑器试试。3 S; n: p' Q  w
, t8 v0 k* G3 ], }1 S
另:有哪位高人能解决Emacs里中文组名的显示问题?      

TOP

发新话题