窝窝头传奇 发表于 2021-3-3 16:42:19

关于C语言S1E22 动动手程序的问题

这个C语言课后作业要求统计中英混合字符串的个数,要甄别中文字符,中文字符占四个字节,指针只要往后推两个空间

窝窝头传奇 发表于 2021-3-3 16:43:23

不应该target+=3吗?

窝窝头传奇 发表于 2021-3-3 16:48:29

大家帮我看看

jackz007 发表于 2021-3-3 17:02:59

本帖最后由 jackz007 于 2021-3-3 17:47 编辑

      一个汉字占用的字符数取决于编码,也就是操作系统的类型,Windows 采用 GBK 编码,每个汉字占用 2 个字符,Linux 采用 UTF-8 编码,每个汉字占用 3 个字符。

      本例的代码基于 Linux 系统,每次循环 target 依例加 1,但是,当判断 ch 为汉字时,又再次加了 2,总共加了 3,正好是一个汉字占用的字符个数。

窝窝头传奇 发表于 2021-3-3 18:39:54

jackz007 发表于 2021-3-3 17:02
一个汉字占用的字符数取决于编码,也就是操作系统的类型,Windows 采用 GBK 编码,每个汉字占用 2...

我看小甲鱼的答案是说中文字符占4个

窝窝头传奇 发表于 2021-3-3 19:17:19

窝窝头传奇 发表于 2021-3-3 18:39
我看小甲鱼的答案是说中文字符占4个

小甲鱼说的是错的哈哈哈

jackz007 发表于 2021-3-3 20:03:17

窝窝头传奇 发表于 2021-3-3 18:39
我看小甲鱼的答案是说中文字符占4个

      别冤枉别人,唯一的可能是你自己记错了。

窝窝头传奇 发表于 2021-3-4 14:04:53

jackz007 发表于 2021-3-3 20:03
别冤枉别人,唯一的可能是你自己记错了。

他的编译器出来显示是4个 他自己的话也说是4个 我代码出来是三个字符

zjohannes 发表于 2021-9-8 18:06:45

窝窝头传奇 发表于 2021-3-4 14:04
他的编译器出来显示是4个 他自己的话也说是4个 我代码出来是三个字符

因为最后一个是结束符,所以在你这道题中的最后length-1就是用来计算去除‘\0’之后的字符数

jhq999 发表于 2021-9-9 21:11:11

本帖最后由 jhq999 于 2021-9-9 21:13 编辑

UTF-32占4个字节
页: [1]
查看完整版本: 关于C语言S1E22 动动手程序的问题