字符简介
- 字符串(character string)是一个或多个字符的序列
- 双引号不是字符串的一部分。双引号仅告知编译器它括起来的是字符串,正如单引号用于标识单个字符一样
char类型数组和null字符
- C语言没有专门用于存储字符串的变量类型,字符串都被存储在char类型的数组中。
- 数组由连续的存储单元组成,字符串中的字符被存储在相邻的存储单元中,每个单元存储一个字符。数组是同类型数据元素的有序序列。
char name[40]; 创建了一个包含40个存储单元的数组,每个单元存储一个char类型的值
name后面的方括号表明这是一个数组,方括号中的40表明该数组中的元素数量。char表明每个元素的类型 - 数组末尾位置的字符是\0,这是空字符(null character),C语言用它标记字符串的结束。它是非打印字符,其ASCII编码为0。C中的字符串一定以空字符结束,这意味着数组的容量必须至少比待存储字符串中的字符多1
使用字符串
- scanf()在读取输入时会把空字符放在字符串末尾。编译器会在字符串常量末尾加上空字符
- 注意(这很重要),scanf()它在遇到第一个空白(空格、制表符或换行符)时就不再读取输入
字符和字符串
- 字符串常量"x" 和 字符常量 'x' 不同,区别之一后者时基本类型char,前者是派生类型char数组,区别之二前者实际上由两个字符组成:x和空字符
strlen()函数
- strlen()函数给出字符串中的字符长度,也使用%zd转换说明,不会将空字符计入。strlen()会在空字符时停止
- string.h头文件包含多个与字符串相关的函数原型,包括strlen()。一般而言,C把函数库中相关函数归为一类,并为每类函数提供一个头文件
- 可以在参数之间断为两行,但是不要在双引号中的字符串中间断开
- strlen()得出的字符串中的字符数,包括空格和标点符号,不包括空字符,sizeof()会将字符串末尾不可见的空字符也计算在内。sizeof会给出对象的对象大小,字符串数组可定义字符串数组的存储单元(位数)。对于早期的C,这两个函数返回的实际类型通常时unsigned 或 unsigned long,所以也可用%u或%lu
- 运算对象是类型时,圆括号必不可少,但是对于特定量,圆括号可有可无。建议所有情况下都使用圆括号
最后修改:2024 年 03 月 05 日
© 允许规范转载