1.字符数组的定义
用来存放字符数据的数组是字符数组,字符数组中的一个元素存放一个字符。
char a[10]:定义一个长度为10的字符型数组。
注意:c语言中会在字符串末尾加上“\0”作为结束标志,如“ATD138000000\n”的总字节为13+1=14。
2.字符数组初始化
char [10] = {‘H’ , ‘e’ , ‘l’ ,‘l’ , ‘o’};
char [10] ={"Hello"};
char [10] = "Hello";
以上字符串都是6个字节,所以字符型数组是字符串的容器,要提供足够大的空间容纳字符串,长度至少要>=字符串长度。初始化剩下的空间自动补“\0”。
3.字符串处理函数
1.puts函数
puts(s)中s为数组名,数组名为数组首元素地址,puts("1234")指的是首元素“1”的地址。
例如输出char s[10] = "Hello",
2.gets函数
gets不会考虑长度,当输入字符串长度大于数组长度时,会造成越界访问。
而fgets可以考虑长度,其一般形式为:
fgets(s, sizeof(s),stdin)中s为数组名,sizeof(s)为最大字节数,stdin表示键盘输入。
scanf("%s", s)同样也不会考虑长度,而且字符串中若有空格,则会结束输入,如
输入abc def
输出abc
3.strlen函数
统计有效字符个数,要加头文件#include<string.g>
例:
输出为5,strlen函数的原理:
printf()也是将整形、浮点型转化为字符串。
4.strcpy函数
strcpy(s2, s1);中s2为目标,s1为源目标,是指将s1拷贝给s2;原理代码如下:
5.strcat函数
strcat(s1, s2);s1为目标,s2为源目标;将s2连接在s1末尾,其原理代码如下:
6.strcmp函数
strcmp(s1, s2)
printf("%d\n", strcmp(s1,s2))输出的值>0,则字符串s1>字符串s2;
输出的值=0,则字符串s1=字符串s2;
输出的值<0;则字符串s1<字符串s2;
其原理代码如下:
例子:三个数比较
4.二维数组
int a[3][4]表示3行4列个元素,本质是一维数组的数组,即:
3个长度为4的一维数组a[0],a[1],a[2];
初始化:int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}},也可以省略内层{},空的地方补0
省略智能省略靠近变量名的那个。如a[][4]
二维数组的遍历代码:
确定行数:sizeof(a) / sizeof(a[0]) 总元素字节/一行元素字节
确定列数:sizeof(a[0])/sizeof(a[0][0]) 一行元素字节/一格元素字节
二维数组求平均值代码: