标准C学习day10 字符串

C语言程序里用字符串记录文字信息

字符串由一组连续的字符构成,并且
最后一个字符必须是’\0’字符
(它的ASCII码就是0)
例如
dkljqta\0
%&*%$\0
字符串必须记录在一组连续的字符类型
存储区里


aweatdwdg\0dgdgdg
'\0’字符后面的内容都是无效的
所有字符串都可以用字符类型指针表示
(只要指针指向第一个字符所在的
存储区)

字符串字面值是一种字符串(例如"awdfg",
"%&^%"等)
编译器会自动在字符串字面值的末尾追加
'\0’字符
编译器会把字符串字面值替换成第一个字符
的地址
字符串字面值的内容在程序执行的时候不
可以改变
程序里内容一样的字符串字面值其实是同
一个
多个并列的字符串字面值会被合并成
一个
“abc”“def” 会被合并成 “abcdef”

字符数组也可以用来存放字符串
不包含’\0’字符的字符数组不可以当做
字符串使用
可以用字符串字面值对字符数组进行
初始化
字符串字面值里的’\0’字符也会被初始化
到字符数组里
字符数组里的字符串内容可以被修改

在printf函数里使用%s做占位符可以
把字符串里的所有字符显示在屏幕上

不可以用操作符操作字符串
C语言里提供一组标准函数用来操作字符串
为了使用这些标准函数需要包含string.h
头文件

strlen 计算字符串里有效字符个数
与sizeof结果完全无关
strcat 把一个字符串的内容追加
到另外一个字符串的末尾
如果数组装不下合并后的
字符串就会修改不属于
数组的存储区,这会造成
严重错误
strncat 功能和strcat类似
这个函数可以限制最多追加
的字符个数
strcmp 比较两个字符串的大小
从第一个字符开始向后逐个
字符进行比较
当遇到第一对不一样的字符时
ASCII码大的字符所在的
字符串就大
返回值为1表示前一个字符串大
返回值为-1表示后一个字符串大
返回值为0表示一样大
strncmp 功能和strcmp类似,可以只
比较前n个字符
strcpy 把一个字符串的内容拷贝
到字符数组里
这个函数有可能修改数组后面
的存储区内容,所以会造成
严重错误
strncpy 功能和strcpy类似
可以限定拷贝的字符个数,
这样可以避免出问题
可能不会把’\0’字符拷贝
到数组里
memset 把一组连续字符类型存储区
的内容设置成同一个字符
strstr 从一个字符串里找另外一个
字符串所在的位置
如果找不到就返回NULL

以下函数使用的时候不需要包含string.h
头文件
sprintf 把数字转换成字符串并记录
到字符数组里
第一个参数是一个字符数组,
后面的参数就是printf
函数的参数

sscanf 从字符串里获得数字并记录
到存储区里
第一个参数是一个字符串,
后面的参数就是scanf函数
的参数

为了使用以下函数需要包含stdlib.h头
文件
这两个函数的作用是把字符串里的数字
转换成数字类型

atoi 把字符串开头的整数部分转换
成整数类型
atof 把字符串开头的浮点数部分
转换成双精度浮点类型

fgets函数可以用来从键盘获得字符串
这个函数需要三个参数
1.数组名称
2.数组里的存储区个数
3.用stdin表示键盘

如果用户输入的内容不能充满数组就把
用户最后输入的换行字符作为’\n’
也放到数组里
如果用户输入的内容超过数组范围就把
数组里放不下的部分留在输入缓冲区里
如果用户以后再想从键盘获得数字就必须
首先把上次遗留的数据删除
应该在一个分支里删除输入缓冲区里存在的
多余数据,分支要保证输入缓冲区里
存在多余数据

指针数组里记录多个同类型指针
字符指针数组里记录多个字符指针,
每个字符指针可以代表一个
字符串

字符指针数组
0 |------> “abc”
1 |------> “def”
2 |------> “xyz”
下标

主函数的第二个参数就是一个字符指针
数组
第一个参数是一个整数,表示第二个参数
里的指针个数
字符指针数组里的所有字符串都来自于
用户输入的命令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值