日期:2014-05-16  浏览次数:20805 次

懂中文字符的好心人,麻烦来看看数据类型
我用c语言开发一个项目;其中有对数据类型的要求。对其中有种类型不清楚。麻烦看看。

数据类型 说明

STRING GBK编码,采用0终结符,若无数据,则放一个0终结符。


这个STRING 类型,主要来存,车牌号。对其中有几点不清楚。

1:这个STRING类型,c中是没有这个类型的。我想因为是GBK编码,应该存中文的,是不是wchar_t来定义一个,比如wchar_t[30] STRING;这样就是吗?


2:0终结符,就是放一个“0”吗?


3:在linux下一个wchar_t是4个字节,不是一个中文是2个字节码?



我该怎么做啊,不知道有谁能帮帮我吗,

------解决方案--------------------
1、GBK是一种编码方式,而wchar_t是一种存储格式,两种东西,两种概念……
2、GBK格式有着自己的编码要求,不过在实际编程当中,没人关心这个,因为肯定会有一个函数,或者在I/O函数中肯定会有一个参数来标定写入字符的编码方式,这个就需要你去查看API文档了。
3、c语言没有对象的概念,自然也没有string的这种类型,但是c语言明确的说过,是char[]来存储string类型的数据,所以,实际上string类型就是char[]类型……
4、wchar_t在vc里是2个字节,在linux是4个字节,这完全是不同编译器的不同解释方法,跟实际编程没啥关系,你照样用wchar_t[]来模拟string,没有任何问题(程序移植是另外一码事),如果你觉得浪费空间,就找2个字节的数据类型,或者用char[]一样可以,没人规定char[]一次只能写一个地址空间,怎么用完全是程序员的事……
5、0一向是c语言的字符串结尾标志,所谓的0并不是阿拉伯数字的0(ascii的48,看看ascii表就知道了),而是ascii的0,也就是ascii表的第一个字符,是一个控制字符,无法显示的,转义字符用"\0"表示,如果直接给数组赋值,就是a[i]=0……