目录
一、前言
二、字符串函数
1.strlen函数
strlen函数模拟实现
2.strcpy函数
strcpy函数模拟实现
一、前言
字符串函数也是库函数,他给我们日常编程提供了极大的帮助,所以我们必须认识并且学会这些函数的使用。(头文件是string.h)
二、字符串函数
1.strlen函数
函数的参数形式 size_t strlen(const char* str);
size_t表示的是无符号数,const放的位置表示*str所指向的内容不可以被改变。
strlen函数的特点是遇到’\0’就停止了,且只能用来求字符的长度。
具体实现如下:
#include<stdio.h>
#include<string.h>
int main()
{
char arr[]={"yangying"};//杨颖
int len=strlen(arr);
printf("len=%d",len);
return 0;
}
这样一个简单的strlen用法就写完了,但是不代表这个函数到此结束啊,满级选手你说是吧,
那么既然还没结束,我们显然还要讲讲这个函数实现的原理(直接模拟实现一下)。ok!!!!
咱们废话不多说,直接开整。
strlen函数模拟实现
#include<stdio.h>
#include<assert.h>
int my_strlen(char *p)//用p指针去接受传过来的arr数组首元素地址。也可以用arr[]接收
{
assret(p!=NULL);
int count=0;//用来计数的
while(*p)//也可以写成*p!='\0'
{
p++; //这里也可以写成while(*p++)
count++;
}
return count;//返回count的值
}
int main()
{
char arr[30]={0};
printf("请输入要计算的字符串长度\n");
scanf("%s",&arr);
int len=my_strlen(arr);//模拟函数的创建,用len接受他的返回值
printf("len=%d\n",len);
return 0;
}
注意:strlen是无符号是,所以strlen("字符串")-strlen("字符串")必是大于0的数。
#include<stdio.h>
#include<string.h>
int main()
{
size_t count = strlen("kong") - strlen("hellochao");//得到的结果必定大于0
printf("count=%u", count);
return 0;
}
得到的结果为
为负数存的是补码,以%u打印打印出无符号的补码
2.strcpy函数
函数的参数形式char* strcpy(char*destination,const char*source);
该参数说明了strcpy返回类型是char类型的指针,将源头(不能被改)拷贝到目的地。
strcpy特点和strlen类似,遇到‘\0’就停止拷贝,也是只能拷贝字符,目的地的空间必须大些以便
于存下源头文件。
具体实现如下:
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[30]={"hello"};
char arr2[30]={"kongchao"};
strcpy(arr1,arr2);
printf("%s",arr1);
return 0;
}
strcpy函数模拟实现
#include<string.h>
#include<string.h>
#include<assert.h>
char*my_strcpy(char*dest,const char*src)
{
assert(dest&&src);//断言,防止传过来是NULL;
char*pp=dest;//记下dest的初始地址防止找不到
while(*dest++=*src++)
{
; //这里啥也不做;
}
return pp;//返回初始地址
}
int main()
{
char arr1[30]={"nihao"};
char arr2[20]={"haohaoxuexi"};
my_strcpy(arr1,arr2);
printf("%s",arr1);
return 0;
}
小伙伴们学习愉快,希望大佬们指正
顺便支持一波