C语言字符串问题?

首先中文编码是4个字节,相当于四个字符。
所以你要放的话,可以这样。

中文数组一般是Unicode编码

wchar_t是C/C++的字符数据类型,就是unicode编码,char是8位字符类型,最多只能包含256种字符,许多外文所含的字符数目超过256个,char型无法表示。

  wchar_t数据类型一般为16位或32位,但不同的C或C++库有不同的规定,如GNU Libc规定wchar_t为32位[1],总之,wchar_t所能表示的字符数远超char型。

  标准C++中的wprintf()函数以及iostream类库中的类和对象能提供wchar_t类型的相关操作。

  wchar_t数据类型一般为16位或32位,但不同的C或C++库有不同的规定,如GNU Libc规定wchar_t为32位[1],总之,wchar_t所能表示的字符数远超char型。

编写针对上述国家和地区的用户的程序时,如果你想让自己的应用程序得到更广泛的用户,那么必须考虑代码   UNICODE   的兼容性,也就是说它既在   ASCII   模式下运行   ,也能在UNICODE   模式下运行。本文将介绍

字符集只有256个字符,用   0-255   之间的数字来表示。包括大小写字母、数字以及少数特殊字符;如标点符号、货币符号等。对于大多数拉丁语言来说,这些字符已经够用。但是,许多亚洲和东方语言所用的字符远远不止256个字符。有些超过千个。人们为了突破   ASCII   码字符数的限制,试图用一种简单的方法来针对超过256个字符的语言编写计算机程序。于是   UNICODE   应运而生。UNICODE   通过用双字节来表示一个字符,从而在更大范围内将数字代码映射到多种语言的字符集。

兼容性意味着你的程序是否具有国际化特征,也就是说你的应用程序是针对本地市场还是国际市场。一旦你作出了决定,那么就得在代码中实现具体细节。好在   Visual   C++   提供了很多内建功能来支持   UNICODE,在创建工程时就可以利用   Visual 编码规则,MFC   以宏的形式提供了将一般文本转换成   UNICODE   数据类型的途径。开发人员只需要稍微改变一下编写代码的习惯便可以轻松编写支持   UNICODE   的应用。

为了将上面的声明改成支持双字节的   UNICODE   字符集,可以用下面的方法:

  将会在头文件中插入预处理指令。这些指令告诉编译器程序想要支持何种字符集。这样在使用VC++提供的通用数据类型时,编译器将用相应的数据类型把通用数据类型替换成所需要支持的字符集。这样很容易将代码重新编译成支持其它字符集的程序。

在C语言中合法的字符常量是怎么定义的.
 
  • 必须是单引号('')扩上的 “单个”字符才能叫字符常量。 1、'\084' 并不是 八进制,因为自由当‘\'后面的三位数都小于7的情况下,编译器才会认为是一个八进制数。所以'\084'是错的。 2、'\x43' 表示十六进制数,所以是对的,以'\x'开头的数是十六进制的 3、'ab',一定是错的,ab是两个字符,可以加字符串了。 4、"\0",是用 双引号 扩上的,所以它是字符串常量。 所以只有 2 是对的。
  • 1、单引号括起来的单个常量叫字符常量,如‘a',’A','1'等
    1、单引号括起来的转移字符也叫字符常量,转义字符形如‘\n',意思是将反斜杠后面的字符转换为其他意思,比如'\n',为回车换行,非字符n
    3、转义字符的两种特殊情况是形如:’\0dd',和,\xxx'的形式,其中dd为八进制数,xxx为十六进制数,这两种形式表示相应ascii码值的ascii字符,换句话说,使用这两种形式的转移字符可表示ascii码表中的所有字符
    所以你的问题中a是正确的
  • 而且不能大于一个字符,所以C和D是错的 A是种特殊写法,没有B的写法,所以A对

1. hello字符串是个常量,在内存中存储在常量区;

2. 将hello字符串的首字符h的地址,赋值给指针p;

*p='A'这样写,就意味着要修改hello这个常量字符串,这个在标准中是不建议这么干的。从你的提问来看,你的编译器也确实不让你这么干。

为何标准不建议修改常量字符串呢?因为字符串常量在程序中会被多次引用到,你在一个地方修改了它,那么别人再引用的时候就会纳闷儿怎么一个常量的东西被修改了?为了避免引起不必要的误会,标准不建议修改字符串常量。

当然了,如果你一定要修改,可以这样做:

这样是可以的。因为hello字符串常量的一个副本拷贝给了字符数组s,所以你修改字符数组s的时候,只是在修改字符串hello的一个拷贝而已。

我要回帖

更多关于 c语言逻辑值真假如何表示 的文章