strcpy与strncpy的模拟与实现

简介: strcpy与strncpy的模拟与实现

strcpy不受长度限制的字符串函数,strncpy受长度限制

查阅资料比较strncpy比strcpy多一个长度n的参数去控制copy的长度,

两个函数都返回被copy的字符串的地址。

下面简单实现

strcpy的实现

char* my_strcpy(char* str, const char* source)
{   assert(source&&str);//判断
  char* ret = str;//纪录被copy的初始地址
  while (*str++ = *source++);
  //当'\n'赋值过去的时候,为假,结束循环赋值结束
  return ret;
}

strncpy的实现

char* my_strncpy(char* str, const char* source,int n)
{   assert(source&&str);//判断
  char* ret = str;//纪录被copy的初始地址
  while ((*str++ = *source++) && --n);
  //用n来纪录copy的字符数量
  return ret;
}

通过比较可以发现strncpy相对于strcpy来说更为细致,strncpy

可以完成一些strcpy无法完成的任务

样例

在这里插#include <iostream>
using namespace std;
#include <string>
#include <assert.h>
char* my_strncpy(char* str, const char* source,int n)
{
  assert(source&&str);
  char* ret = str;//纪录被copy的初始地址
  while ((*str++ = *source++) && --n);
  //用n来纪录copy的字符数量
  return ret;
}
int main()
{
  char a[] = "abcab";
  char b[] = "xxxxxxxxxx";
  cout << my_strncpy(b, a,3) << endl;
  cout << b;
  return 0;
}

运行结果

目录
相关文章
|
7月前
strlen,strcpy,stract,strcmp,strstr函数的模拟实现
strlen,strcpy,stract,strcmp,strstr函数的模拟实现
64 3
|
7月前
|
C语言
字符串函数`strlen`、`strcpy`、`strcmp`、`strstr`、`strcat`的使用以及模拟实现
字符串函数`strlen`、`strcpy`、`strcmp`、`strstr`、`strcat`的使用以及模拟实现
129 1
|
2月前
解析与模拟常用字符串函数strcpy,strcat,strcmp,strstr(一)
解析与模拟常用字符串函数strcpy,strcat,strcmp,strstr(一)
40 0
|
存储 Cloud Native Linux
C++ strcpy、sprintf与memcpy的区别
C++ strcpy、sprintf与memcpy的区别
|
7月前
strcat与strncat函数使用与模拟实现
strcat与strncat函数使用与模拟实现
44 0
|
C语言
自己实现strcpy和strlen函数
自己实现strcpy和strlen函数
91 0
C实现字符操作函数,strcpy, strcat, strcmp, memcpy
C实现字符操作函数,strcpy, strcat, strcmp, memcpy
53 0
strcpy函数与strncpy函数
strcpy函数与strncpy函数
|
编译器 C语言
C语言strlen,strcpy ,strcat, strcmp,strstr常用库函数的理解与模拟实现
C语言strlen,strcpy ,strcat, strcmp,strstr常用库函数的理解与模拟实现
147 0