1.关于strncpy函数的介绍
1.strncpy是C语言的库函数之一,来自C语言的标准库
定义于string.h,所以在使用该函数的时候需要#include <string.h
2.函数声明
从图中我们可以知道其返回类型为char* 类型
3.参数的意义
char* strncpy(char* dest,char* src,int size_t)
dest-(destination)目的地->就是最终呈现的;目的地,目标数组
src-(source)源头->要复制的字符串
n->要从源头复制的字符数
返回值用来表现其最终形式
2.函数的实现
char* my_strncpy(char* dest,const char* src,int num)
{
char* ret=dest;//用来记录开始的地址
assert(dest!=NULL);//安全性优化
assert(src!=NULL);
int i=0;
for(i=0;i<num;i++)
{
*dest=*src;
dest++;
src++;
num--;
}
if(num>0)//若n>被拷贝的字符串数目,需要将被拷贝的字符的其他内容用空字符进行补充
{
while(n)
{
*str++='\0';
num--;
}
}
return ret;
}
1.关于strncat的介绍
1.同样与strncpy函数相同它也是库函数之一
也需要加上一个#include <string.h>
但是他的作用是拼接,在数组1后加上数组二的内容
2.函数的声明
同样其函数的返回类型是char* 类型
2.函数的模拟实现
char* my_strncat(char* dest,const,char* src,size_t,num)
{
assert(*dest!=NULL);
assert(*src!=NULL);
char* ret=dest;
for(int i=0;i<num;i++)
{
if(*dest!='\0')
{
dest++;
}
}
for(int i=0;i<num;i++)
{
*dest++=*src++;
num--;
}
if(num>0)
{
while(n)
{
*src++='\0';
num--;
}
}
return ret;
}
1.strstr函数的介绍
1.在父字符数组中寻找字符数组中的元素
同样是c语言的库函数之一;
如图可知其返回类型为char* 类型
2.函数的模拟实现
const char* my_strstr(const char* str1,const char* str2)
{
assert(str1);
assert(str2);
const char*cp=str1;//使用cp来记录可能找到匹配的字符串的起始位置
const char* s1=NULL;
const char* s2=NULL;
if(*str2=='\0')//如果子字符串是空字符串就直接返回str1
return str1;
while(*cp)//遍历
{
s1=cp;
s2=str2;
while(*s1==*s2&&*s1&&*s2)//遍历
{
s1++;
s2++;
}
if(*s2=='\0')
return cp;
cp++;//当找不到匹配的字符串时要向后检索
}
return NULL;如果str1遍历完还找不到返回NULL指针
}