【context】
C语言函数库中一些处理字符串的函数(待更新)
一维数组
定义
类型符 数组名[常量表达式];
Ø
在定义数组并对其中各元素赋值后,就可以引用数组中的元素
Ø
只能引用数组元素而
不能一次整体调用整个数组全部元素的值
初始化
//在定义数组的同时,给各数组元素赋值
int a[10]={0,1,2,3,4,5,6,7,8,9};
//部分赋值,系统自动给剩余部分元素赋值为0
int a[10]={0,1,2,3,4};//相当于int a[10]={0,1,2,3,4,0,0,0,0,0};
//未赋值的数据自动设为0
int a[10]={0,0,0,0,0,0,0,0,0,0};//相当于int a[10]={0};
//数据个数已经确定,可以不指定数组长度
int a[5]={1,2,3,4,5};//可写为int a[ ]={1,2,3,4,5};
二维数组
定义
类型符 数组名[常量表达式][常量表达式];
初始化
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int a[3][4]={{1},{5},{9}};//等价于int a[3][4]={{1,0,0,0},{5,0,0,0},{9,0,0,0}};
int a[3][4]={{1},{5,6}};//相当于int a[3][4]={{1},{5,6},{0}};
字符数组
初始化
char arr1[2]={'a','b'};
char arr2[2]={'a',98};
char arr3[2]="a";//注意字符数组末尾为自动添加的'\0'
char arr[]="abcdef";
字符串与其结束的标志
Ø
在
C
语言中,是将字符串作为
字符数组
来处理的
Ø
关心的是字符串的
有效长度
而不是字符数组的长度
Ø
为了测定字符串的实际长度,
C
语言规定了字符串结束标志
’\0’
Ø
’\0’
代表
ASCII
码为
0的字符;从ASCII
码表可以查到,
ASCII
码为
0的字符不是一个可以显示的字符,而是一个“空操作符”,即它什么也不做;用它作为字符串结束标志不会产生附加的操作或增加有效字符,只起一个供辨别的标志;'\0'占一个空间。
字符数组的输入输出
Ø
字符数组的输入输出可以有两种方法:
- 逐个字符输入输出(%c)
- 整个字符串一次输入输出(%s)
Ø
输出的字符中不包括结束符’\0’
Ø
用
%s
输出字符串时,
printf
函数中的输出项是字符数组名,不是数组元素名;用
%c
输出某个字符时,
printf函数中的输出项是数组元素名,不是字符数组名(否则会报错)。
Ø
如果
一个字符数组中包含
多个
’\0’
,则遇第一个
’\0’时输出就结束
Ø
可以用
scanf函数输入一个字符串
Ø
scanf
函数中的输入项
c
是已定义的字符数组名,输入的字符串应
短于
已定义的字符数组的长度。
C语言函数库中一些处理字符串的函数
后续更新~
sizeof与strlen
sizeof——计算数组所占空间的大小
strlen——计算字符串的长度(有效长度) \0之前的字符个数
【注意】
- strlen只跟字符串有关,只能针对字符串求长度。是库函数,需要引头文件#include<string.h>
- sizeof计算变量、数组、类型的大小,单位是字节。是操作符。
- 可以验证'\0'也占一个字节。
- strlen遇到\0停止读取
【举例说明】
①如果一个字符数组中包含多个’\0’,则遇第一个’\0’时输出就结束;\0是一个字符,'\0'只是引用字符\0
②(易混淆)在abc后的随机处出现\0
③若计算整型数组的长度,如下:总大小/元素大小——sizeof的单位是字节(算的是字节数)
供后续学习的参考,加深印象。