内存拷贝函数

//实现拷贝不重叠的内存块
void* memcpy1(void* dst,const void* src,size_t count)
{
char* pTo = (char*)dst;
char* pFrom = (char*)src;
assert(dst != NULL && src != NULL);
assert(pTo >= pFrom+count || pTo <= pFrom-count);//防止内存重叠(over lap)
while(count-- > )
{
*pTo++ = *pFrom++;
}
return dst;
}
#include<stdio.h>

char* mystrcat(char* str1,char* str2)//连接
{
char* p=str1;
while (*str1 !='\0')
{
str1++;
}
// while(*str1++);
while (*str2 != '\0')
{
*str1=*str2;
str1++;
str2++;
}
// while (*str1++ = *str2++);
*str1='\0';
return p;
} char* mystrcpy(char* str1,char* str2)
{
char*p = str1;
while (*str1++ = *str2++);
return p;
} char* mystrncpy(char* str1,char* str2,int n)
{
char* p=str1;
for (;*str2!='\0'&&n>;n--)
{
*str1 = *str2;
str1++;
str2++;
}
*str1='\0';
return p;
} int mystrcmp(char* str1,char* str2)
{
while()
{
if(*str1==*str2 && *str1 !='\0')
{
str1++;
str2++;
}
else if (*str1==*str2 && *str1=='\0')
return ;
else if(*str1>*str2)
return ;
else
return -;
}
}

字符串拷贝

#include <iostream>
#include <string.h> using namespace std; char* Mystrcpy(char* dst,const char* src)
{
if(dst == NULL || src == NULL)
return NULL;
int i = ;
for(i = ;src[i] != '\0';i++)
{
dst[i] = src[i];
}
dst[i] = '\0';
return dst;
}
char* Mystrncpy(char *dest, const char *src, size_t n)
{
if(dest == NULL || src == NULL)
return NULL;
int i;
for (i = ; i < n && src[i] != '\0'; i++)
dest[i] = src[i];
for ( ; i < n; i++)
dest[i] = '\0'; return dest;
} int main()
{
char dst[];
char dst1[];
char src[] = "hello";
Mystrcpy(dst,src);
cout << dst << endl;
Mystrncpy(dst1,src,);
cout << dst1 << endl;
return ;
}
//结果:
/*
hello
hel
*/

自己实现memcpy,strcpy与strncpy的更多相关文章

  1. strcpy、strncpy与memcpy的区别与使用方法

    strcpy.strncpy.memcpy这三个C语言函数我们在主机代码编写中会很频繁的使用到,但是三个函数的区别.使用时该注意什么还是有必要说下的. 本文参考<C 标准库>编写. 一.函 ...

  2. strcpy、strncpy、memcpy的区别

    一.strcpy.strncpy区别 struct gpInfo { char gpcode[9]; char gpName[50]; }; string gpstr = "SZ000001 ...

  3. [置顶] strcpy()与strncpy()的区别

    头文件:#include <string.h> strcpy() 函数用来复制字符串,其原型为: char *strcpy(char *dest, const char *src); [参 ...

  4. C语言 - strcpy和strncpy的编程实现及总结

    一.字符串的strcpy与strncpy函数 1.编程实现strcpy函数(笔试很容易考到) 要求: 原型:char *stpcpy(char *strDest,char *strSrc); 头文件: ...

  5. c常用函数-strcpy和strncpy

    strcpy和strncpy strcpy在脚本开发中经常用到,例如处理参数等,它的作用是把一个字符串复制到另一个字符串中. strncpy的作用是把一个字符串中的指定长度复制到另一个字符串中,如果指 ...

  6. strcpy、strncpy 和安全的strncpy_s

    strcpy和strncpy摘于linux 内核源码的/lib/string.c char *self_strcpy(char *dest, const char *src) { char *tmp ...

  7. c语言中几个常见的库函数strlen、strcmp、strcat、strcpy、strncpy、memset、memcpy、memmove、mmap

    1.strlen() 1)计算给定字符串的长度,不包括’\0’在内 unsigned int strlen(const char *s) { assert(NULL != s);//如果条件不满足,则 ...

  8. strcpy、strncpy、strlen、memcpy、memset、strcat、strncat、strcmp、strncmp,strchr

    1.strcpy #include<stdio.h> #include<assert.h> char *mystrcpy(char *dest, const char *src ...

  9. strcpy()、strncpy()和memcpy()对比

    strcpy()函数声明:char *strcpy(char *dest, const char *src)返回参数:指向最终的目标字符串 dest 的指针.注意事项:只能复制char类型的字符数组, ...

随机推荐

  1. router-link 绑定事件的方式

    实现方法如下  使用.native 实现原生事件 <router-link to="" @click.native="dialogWithdraw=true&quo ...

  2. Java Statement PK PrepareStatement

    PreparedStatement是用来执行SQL查询语句的API之一,Java提供了 Statement.PreparedStatement 和 CallableStatement三种方式来执行查询 ...

  3. Spring如何加载log4j配置文件

    今天有朋友在群里问了这个问题,于是写了这篇文章进行整理. 问题如下: 在项目中添加了log4j.properties配置文件,并没有在Spring配置文件中配置,也没有在web.xml中配置,但是代码 ...

  4. 将 ASP.NET Core 2.0 项目升级至 ASP.NET Core 2.1.3X

    在上一篇文章ASP.Net Core 运行错误 Http Error 502.5 解决办法的最后有提到说,最推荐的升级办法是从2.0升级到2.1X版本. 操作如下 项目的例子直接使用https://g ...

  5. 追源索骥:透过源码看懂Flink核心框架的执行流程

    li,ol.inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-bottom:20px}dt, ...

  6. Codeforces Round #481 (Div. 3)Petya's Exams CodeForces - 978G

    Petya studies at university. The current academic year finishes with nn special days. Petya needs to ...

  7. python札记

    进制转换 num = "0011"v = int(num, base=16)print(v)2->16

  8. py使用笔记-pandas函数

    1,nan替换为0df = df(np.nan, 0, regex=True)2.inf替换为0df= df(np.inf, 0.0, regex=True)3.从数据库读取数据到dataframei ...

  9. laravel belongsTo使用

    前提:订单表(order)和用户表(user) 表结构: order CREATE TABLE `order` ( `id` char(16) COLLATE utf8mb4_unicode_ci N ...

  10. Spark源码编译,官网学习

    这里以spark-1.6.0版本为例 官网网址   http://spark.apache.org/docs/1.6.0/building-spark.html#building-with-build ...