总结字符串函数

几个比较重要的字符串函数

1.求字符串长度的函数———>strlen

2.长度不受限制的字符串函数———>strcpy、strcat、strcmp

3.长度受限制的字符串函数——>strncpy、strncat、strncmp

4.字符串查找——>strstr、strtok

5.错误信息报告——>strerror

1.求字符串长度的函数

这个求字符串长度的函数是以‘\0’为结束标志,strlen返回的是\0前面的字符串,

例如我输入abcdefgh,每一个字符串后面都有\0,所以strlen这个函数的作用就是返回\0前面的那些字符串,'\'是strlen的结束标志,要牢记这一点,strlen的结束标志是'\0'

strlen的模拟实现代码

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<string.h>
int my_strlen(const char* str)
{
	int count=0;
	assert(str!=NULL);
	while(str!=''\0)
	{
		count++;
		str++;
	}
	return count;
}
int main()
{
	int len = my_strlen("abcdef");
	
}

另外要特别注意size_t,size_t是什么呢?size_t是strlen的类型,size_t是typedef重命名的unsigned int 叫做无符号整型,所以size_t==unsigned int 

所以如果输入的两个字符串相减是负数,然后unsigned int 又会重新把它变成正号

2.长度不受限制的字符串函数——>strcpy

strcpy有几个受制于几个条件我们来列举一下

1.首先你要获取的那个字符串函数必须得是以\0结尾

2.存储的空间要足够大

3.另外会将要获取的字符串函数结尾的\0也给移过来

我们来通过一段代码来解释

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
	char arr1="abcdef";
	char arr2="bit";
	strcpy(arr1,arr2);
	return 0;
}

那么源字符串arr1的字符会全部被替换为bit

下面这段代码是strcpy的模拟实现


my_strcpy(char* dest,char* str)
{
	assert(dest!=NULL);
	assert(str!=NULL);
	char* ret=dest;
	//拷贝src指向的字符串到dest指向的空间,包含‘\0’
	while(*dest++==*str++)
	{
		;
	}
	//返回目的空间的起始地址
	return ret;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
	char arr1="abcdef";
	char arr2="bit";
	my_strcpy(arr1,arr2);
	return 0;
}

如果目标空间不够大,那么就有可能会越界访问
(2)strcat函数

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

要注意下面几点

1.源字符串必须以‘\0’结束

2.目标空间必须足够大,能够容纳下源字符串的内容,否则可能会出现越界

3.目标空间必须可以被修改


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{	
	char arr1[30]="hello";
	char arr2="world"
	strcat(arr1,arr2);
	printf("%s\n",arr1);
	return 0;
}

arr1中的字符串这次就不会像前面几个函数会直接把他们呢替换,这个函数会在hello的后面加上world所以这个printf打印的是helloworld。 

由于今晚时间比较晚,白天要准备期末考试,所以只能晚上抽出一些时间,最近没有时间也csnd了所以,明天接着把这次的补上,不要太过于的相信自己的一次性的力量,而要相信自己长期的力量,我们长期的力量会远远的大于自己的一次性力量,只要坚持下去,即使不用花很多钱报班,养成一个写代码的习惯,并且养成一个每天都有学习新知识的习惯,那么困难什么的都是浮云,在你面前就没有什么困难,其实这不是卷,这是让自己内心平静下来的一种方式。追随自己的内心,加油

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值