第十章 字符串
字符串(character String);
- 一个或多个字符的序列称为字符串
- c语言中形如“My heart siill.”
- 双引号不是字符串的一部分,仅用来告知编译器括起来的是字符串
C语言中的字符串
- 使用字符数组存储
见图l
注意:
空字符不要和NULL混淆
空字符是字符串的终止符,而NULL是一个符号,表示不引用任何内容的内存地址
字符串与字符数组
- 使用字符数组存放字符串
1 |
|
1 |
|
- 注意:声明存储字符串的数组时,数组大小至少比所存储的字符多1,因为编译器会自动在字符串常量的末尾添加空字符\0
gets/puts函数补充
1 |
|
注意:
1、gets函数不对接受字符串的buffer进行边界检测,会造成越界,从而产生bug
2、可以使用fgets(words1,20,stdin);代替gets,20表示最多读入20-1个字符
字符串操作
- 常用字符串处理函数
见图m
strlen函数
- 功能:
- 计算字符串的实际长度,不含字符串结束标志\0
1 |
|
字符串复制
- 功能:
- 把源字符数组中的字符串复制到目的字符数组中,连同结束标志\0一同复制
1 | void main() |
字符串比较
- 功能:
- 将两个字符串从首字母开始,按照ASCII码的顺序进行逐个比较
1 |
|
随堂练习
1 |
|
指向字符串的指针
- 将指针指向字符串
- 可以指向常量字符串
- 也可以指向存储字符串的字符数组
1 | char * words = "My heart is still."; |
见图n
数组和指针
- 数组形式和执行形式的不同
- 初始化字符数组时会把静态存储区的字符串拷贝到数组中
- 初始化指针时只把字符串的地址拷贝给指针
1 |
|