一、Strlen函数(头文件string.h)
1.Strlen函数介绍
以上是strlen在MSDN中的用法提示。
Strlen函数用于统计字符串长度(在检测到'\0'时停止,统计数据不包含'\0')
(注:笔者经常把strlen与sizeof搞混,strlen作用于字符串,sizeof是操作符,返回一个对象或类型所占的内存字节数)
2.Strlen函数模拟实现
计数器法
#include<stdio.h>//Strlen函数模拟实现
int my_Strlen(char* p)
{
int count = 0;
while (*p != '\0')
{
count++;
p++;
}
return count;
}
int main()
{
char arr[]="abcdef";
int ret = my_Strlen(arr);//传入数组首地址,Strlen函数会自动寻找到'\0'
printf("%d\n", ret);
return 0;
}
指针法
#include<stdio.h>//指针法实现Strlen函数
int my_Strlen(char arr[])
{
char* left = arr;//注意,类型为char*
char* right = arr;
while (*right!='\0')//如若right没扫描到'\0',right向后移动
{
right++;
}
return right-left;//指针减指针返回两个指针之间的元素数目
}
int main()
{
char arr[] = "abcdef";
int ret = my_Strlen(arr);
printf("%d\n", ret);
return 0;
}
递归方法
#include<stdio.h>
int my_Strlen(char *p)
{
if (*p != '\0')
{
return 1 + my_Strlen(++p);//
}
else return 0;
}
int main()
{
char arr[] = "abcdef";
int ret = my_Strlen(arr);
printf("%d\n", ret);
return 0;
}
二、Strcmp函数(头文件string.h)
1.Strcmp函数介绍
(逐个比较两个字符串元素的大小)
Strcmp函数用于比较两个字符串的大小,返回值如下所示
2.模拟实现Strcmp函数
#include<stdio.h>
int my_Strcmp(char* dest, char* src)
{
while ((*dest == *src) && (*dest != '\0'))//逐个比较元素
{
dest++;
src++;
}
return *dest - *src;
}
int main()
{
char arr1[] = "abcdef";
char arr2[] = "ffffffff";
if(my_Strcmp(arr1, arr2) > 0)
{
printf("arr1比arr2大\n");
}
if(my_Strcmp(arr1, arr2) < 0)
{
printf("arr1比arr2小\n");
}
if(my_Strcmp(arr1, arr2) == 0)
{
printf("arr1与arr2大小相等\n");
}
return 0;
}
今晚就到这里啦,明天会继续更新库函数的模拟实现,大家晚安。