C语言---字符串函数和内存函数

库函数:别人写好的,让我们直接去使用

1.降低了门槛

2.提高的效率

标准库函数(C语言自带的)+第三方库函数(如果需要使用需要额外下载安装)

size_t strlen ( const char * str );

const char*

char const*这两个作用是相同的,都是规定了指针指向的内容不能发生变化。

char* const这个规定了指针本身不能发生变化。

strlen函数的意义是求字符串的长度,所以规定了const char* 指针指向的内容不能发生变化。

size_t 是一个typedef出来的类型别名

通常情况下,size_t是unsigned long

size_t在标准库中是很常见的。

 c string是有问题的,故我们使用std::string

学习某个东西,分成了三个层次:

1.会用

2.理解里面的一些坑,和注意事项

3.能够实现

//使用if来对参数进行检查
	if (str == NULL) {
		return 0;
	}
	//使用断言来对参数进行检查
	assert(str != NULL);
	size_t len = 0;

对NULL解引用是未定义行为,会不会崩溃,说不准!!!

但是使用assert(断言),一定会崩溃,是确定性行为。并且会给出明确的错误信息。

错误的不同级别:

char * strcpy ( char * destination, const char * source );

                                             目标                                     源

把source中的数据拷贝到destination中

strlen      size_t

strcpy

1.拷贝的时候,把\0也一起拷贝过去了

2.要求destination的内存空间足够大,能够容纳下str指向的字符穿的长度(包括\0)

如果内存空间不够,就有可能出现越界的情况。导致未定义行为。

strcat:字符串拼接

这个啊,同样也需要保证dest对应的内存空间足够大,能够容纳下最终的拼接结果。

strcmp:字符串比较,比较字符串的大小/相等。

比较规则:字典序。

 

int main(){
	char str1[1024] = "hello";
	char str2[1024] = "hello111";

 str1的下一个字符就是'\0'

str2的下一个字符就是'1',\0就是ascil码为0的字符。所以一定是\0小

strncpy

strncat

strncmp

里面多了一个n其实就是在限定读取/拷贝字符的个数

strcpy和strcat都要求dest对应的空间足够大。

strncpy和strncat就是多加了一层限制。通过n限制最大拷贝数量的个数,从而避免越界的情况。是比较鸡肋的设定。

strncmp比较两个字符串的前n个字符,相当于比较两个字符串的前半部分。

strstr:字符串匹配

判定str2是否是str1的字串。或者str1是否包含str2.

strstr:参数就是一个短的字符串和一个长的字符串。判定短的是否被长的包含。

它的返回值类型是char*。

如果str1包含了str2,此时返回值的char*就指向str1中str2首次出现的位置。

如果str1不包含str2,就返回NULL

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穿狼皮的小红帽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值