我的C语言.字符串函数的模拟

strlen

size_t strlen(const char* str)

strlen是求字符串的长度,也就是求字符串中\0之前字符出现的个数,需要特别注意的是该函数的返回值是无符号的。

1.计数法

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Zu25Y-B6Zu25Y-B6Zu25Y-B,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Zu25Y-B6Zu25Y-B6Zu25Y-B,size_20,color_FFFFFF,t_70,g_se,x_16

 2.指针减指针法

首先,我们要明白指针减指针的意义是:表示指针之间的元素个数。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Zu25Y-B6Zu25Y-B6Zu25Y-B,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Zu25Y-B6Zu25Y-B6Zu25Y-B,size_20,color_FFFFFF,t_70,g_se,x_16

 3.函数递归法

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Zu25Y-B6Zu25Y-B6Zu25Y-B,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Zu25Y-B6Zu25Y-B6Zu25Y-B,size_20,color_FFFFFF,t_70,g_se,x_16 

strcpy

char *strcpy(char *dest,const char *sou);

该函数的第一个参数为需要拷贝到目标字符数组的首元素地址,第二个参数为源字符数组的首元素地址。

目标字符数组的空间必须要比源字符数组空间大,否则会出现程序错误。

拷贝的内容为将源字符数组\0之前以及\0自身拷贝到目标字符数组中。

返回的参数为目标字符数组的首元素。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Zu25Y-B6Zu25Y-B6Zu25Y-B,size_20,color_FFFFFF,t_70,g_se,x_16

 代码简化:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Zu25Y-B6Zu25Y-B6Zu25Y-B,size_20,color_FFFFFF,t_70,g_se,x_16

 

strcat

char * strcat ( char * head, const char * tail);

将参数二所指向的字符串追加到参数一所指向的字符串尾后。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Zu25Y-B6Zu25Y-B6Zu25Y-B,size_20,color_FFFFFF,t_70,g_se,x_16

strcmp

int strcmp ( const char*e1,const char*e2);

如果两个字符串相同则返回0。

如果e1指向的字符串大于e2指向的字符串,则返回大于0的数字。

如果e1指向的字符串小于e2指向的字符串,则返回小于0的数字。

比较的原理是对字符串中的字符依次一个个比较,如果当前比较的字符相同,在同时进行下一个字符比较,当出现两个对应的字符不同,则根据比较两个字符大小,进行返回。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Zu25Y-B6Zu25Y-B6Zu25Y-B,size_20,color_FFFFFF,t_70,g_se,x_16

strstr

char*strstr(const char*str1,const char*str2);

函数用于判断字符串str2是否是str1的子串。

如果str2不是str1的子串,则返回空指针(NULL)。

如果str2是str1的子串,则返回str1与str2开始吻合的地址。

例:watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Zu25Y-B6Zu25Y-B6Zu25Y-B,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Zu25Y-B6Zu25Y-B6Zu25Y-B,size_20,color_FFFFFF,t_70,g_se,x_16

 最后,还有一些经常使用字符函数:

1,strncpy

2,strncat

3,strncmp

4,strerror

5,strtok

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值