day8 字符数组

字符数组

用来存放字符数据的数组叫字符数组。字符数组中每一个元素存放一个字符。

字符数组主要用于处理c中字符串的使用。

字符串:“hello world”用双引号引用起来的就是字符串,在双引号中,字符串中的字符不可更改。
字符串在内存当中按照先后次序排列起来
c语言中,规定了字符串的结束标志位是‘\0’,'\0'可以省略不写,处理器会自动添加

单一性:每一个字符占一个字节
有序性:字符串在内存中按顺序存放
连续性:占用一块连续的内存空间

字符数组的定义

在C语言中,字符数组的定义方式大概是这样的:

char str[6] = "hello";

这里,char 表示字符类型,str 是数组的名字,[6] 表示这个数组可以存储6个字符(包括最后的空字符\0,它是字符串的结束标志)。"hello" 就是被存储在这个数组中的字符串。

形如这样的数组就相当于一个容器:开辟出了一个占100个字节的数组空间,内容存放的是随机数
注意:这个定义的字符串的长度要足够大,最短也要是len+1

字符数组的初始化

对于字符串的声明和初始化,有以下规则:

字符数组的声明和初始化:

字符数组可以在声明时初始化,但不能直接用花括号 {} 进行赋值。
例如:char s[8] = "Beijing"; 是正确的,但 char s[8]; s = "Beijing"; 是错误的。
字符指针的声明和初始化:

字符指针在声明时可以不初始化,之后可以用赋值语句进行初始化。
例如:char *s; s = "Beijing"; 是正确的。
操作字符串不是用长度,而是末尾的\0

形参要和实参类型匹配,个数相等
 

二分法查找
 

定义一个a[begin]和a[end],令(begin+end)/2的值为mid,然后将需要查找的数与mid相比较,就可以确定n的范围,然后再根据第一次比较的结果移动begin或者end的位置,再次比较n与mid的大小,直到确定n的值。

字符串处理函数

1、puts函数

一般形式:puts(字符数组),作用是将一个以‘\0’结束的字符串输出到终端

函数原型:  形参为char*,实参传数组的数组名

puts函数和putchar实现的功能类似

指针数组:由指针构成的数组

2、gets函数

一般形式:gets(字符数组),作用是从终端输入一个字符串到字符数组

函原型: 

get函数在使用时,因为预先定义的数组可能范围不够大,容易造成越界访问
为解决这一问题可以使用fgets函数
 

fgets的三个参数:要写入的地址;地址空间的长度(sizeof(a)/sizeof(s[0]));空间流
gets函数在使用时,会把空格当做是间隔符,然后空格后的就不会再输入了
3、strlen函数

一般形式为 :strlen(字符数组)  是测试字符串长度的函数,函数的值为字符串中的实际长度(不包括'0'在内)。

sizeof(s)是数组的长度,strlen是数组中有效元素的长度

数组不能整体赋值

4、strcpy函数

一般形式为 :strcpy(字符数组1,字符串2)    它是“字符串复制函数”,将字符串2 复制到字符数组1中。

char*:形参为char*,实参为数组的数组名(s[100]的数组名为s)

使用strcpy时,目标数组的长度一定要足够大,最少为strlen(s1)+1;

5、strcat函数

一般形式为:strcat(字符数组1,字符数组2)  其作用是连接两个字符数组中的字符串,把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数值--字符数组1的地址。

使用strcat函数时,字符数组1必须足够大,可以容纳连接后面的新字符串

6、strcmp函数

一般形式为:strcmp(字符串1,字符串2)   它的作用是比较字符串1和字符串2。

比较的结果是看strcmp的返回值
>0  数组一大于数组二
<0  数组一小于数组二
=0  数组一和数组二相等

  不能这样比较,这样比较的是两个数组在内存中地址的大小,两个数组在比较时,不能使用关系运算符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值