strcpy&memcpy&memmove
strcpy
extern char *strcpy(char *dest,char *source);
{
assert((dest!=NULL)&&(source!=NULL));
char *address=dest;
while((*dest++=*source++)!='\0');
return address;
}
把source所指由NULL结束的字符串复制到dest所指的数组中。source和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳source的字符串。返回指向dest的指针。
memcpy
void *memcpy(void *dest, const void *source, size_t count)//没有对内存重叠进行检查
{
assert((dest!=NULL)&&(source!=NULL));
char* tmpDest=(char*)dest;
char* tmpSource=(const char*)source;
while(count--)
*tmpDest++=*tmpSource++;
return tmpDest;
}
memmove
Copies the values of num bytes from the location pointed by source to the memory block pointed by destination. Copying takes place as if an intermediate buffer were used, allowing the destination and source to overlap

void* memmove(void* dest,const void* src,size_t num)
{
assert((dest!=NULL)&&(src!=NULL));
char* tmpDest=(char*)dest;
char* tmpSrc=(const char*)src;
if(src>dest||src+num<dest)
{
while(num--)
*tmpDest++=*tmpSrc++;
}
else
{
tmpDest=dest+num-;
tmpSrc=src+num-;
while(num--)
*tmpDest--=*tmpSrc--;
}
return dest;
}

strcpy&memcpy&memmove的更多相关文章
- strcpy,memcpy,memmove和内存重叠分析
一:strcpy函数用法和实现: /* GNU-C中的实现(节选): */ char* strcpy(char *d, const char *s) { char *r=d; while((*d++= ...
- strcpy, mencpy, memmove三者区别
首先来看strcpy,目的是实现字符串的复制,这里需要注意几个点: 1.判断指针的有效性 2.将复制后的指针地址返回,为了支持链式操作 3.不要忘记将字符串最后一个自负'\0'复制给dest 4.注意 ...
- 自己实现的库函数2(memset,memcmp,memcpy,memmove)
memset,memcmp,memcpy,memmove是对内存进行管理的库函数,为了更好的理解和使用这几个函数,自己用C语言实现一下~ //内存设置函数void* my_memset(void* d ...
- memset memcmp memcpy memmove 自己实现
memset memcmp memcpy memmove 自己实现 memset #include <stdio.h> #include <memory.h> #include ...
- memcpy/memmove?快速乘?
memcpy?memmove? //#pragma GCC optimize(2) #include<bits/stdc++.h> using namespace std; ; ],b[n ...
- C的memset,memcpy,strcpy 的区别 及memset memcpy memmove源码
extern void *memcpy(void *dest,void *src,unsigned int count);#include <string.h> 功能:由src所指内存 ...
- strcpy和memcpy,memmove函数的区别
strcpy和memcpy的区别 strcpy和memcpy都是标准C库函数,它们有下面的特点. strcpy提供了字符串的复制.即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制 ...
- strcpy, memcpy, memset函数
一. strcpy函数 原型声明:char *strcpy(char* dest, const char *src); 头文件:#include <string.h> 和 #inclu ...
- 访谈将源代码的函数 strcpy/memcpy/atoi/kmp/quicksort
一.社论 继上一次发表了一片关于參加秋招的学弟学妹们怎样准备找工作的博客之后,反响非常大.顾在此整理一下,以便大家复习.好多源自july的这篇博客,也有非常多是我自己整理的.希望大家可以一遍一遍的写. ...
随机推荐
- Android程序中,内嵌ELF可执行文件-- Android开发C语言混合编程总结
前言 都知道的,Android基于Linux系统,然后覆盖了一层由Java虚拟机为核心的壳系统.跟一般常见的Linux+Java系统不同的,是其中有对硬件驱动进行支持,以避开GPL开源协议限制的HAL ...
- Element-ui 中的Dialog 对话框
给表头添加一个底部分割线 固定表格的内容高度 添加底部按钮 <template> <div> <el-button type="text" @clic ...
- LeetCode 307. 区域和检索 - 数组可修改
地址 https://leetcode-cn.com/problems/range-sum-query-mutable/ 题目描述给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ ...
- QT使用LIBS添加绝对路径的dll引用
http://blog.sina.com.cn/s/blog_70b93da90100n6w8.html 参考这篇文章 举例: 要引用 F:\QT\parttime_work\build-JChart ...
- bzoj5092 分割序列
题目链接 problem 对于一个长度为n的非负整数序列\(b_1,b_2,...,b_n\),定义这个序列的能量为:\(f(b)=\max\limits_{i=0,1,...,n}(b_1 \oti ...
- CMake使用总结(一)
当我们在写CMakeLists.txt文件时,常常会搞不明白link_directories, LINK_LIBRARIES, target_link_libraries这3者的区别,下面就其详细介绍 ...
- 16-DRF工程搭建与序列化器
1.DRF工程搭建 环境安装与配置 DRF是以Django扩展应用的方式提供的,所以我们可以直接利用Django环境,而无需创建(先创建Django环境). 1.安装DRF pip3 install ...
- Selenium+java - 通过Robot对象上传文件
思路: 1.将文件路径复制到剪切板 2.用robot对象模拟键盘操作即可 复制文件代码: public void setClipboardData(String data) { StringSelec ...
- 用python读写和处理csv文件
import requestsfrom bs4 import BeautifulSoupimport csv date = open('test.csv', 'w')writer = csv.writ ...
- mysql 优化之 is null ,is not null 索引使用测试
关于mysql优化部分,有很多网友说尽量避免使用is null, is not null,select * 等,会导致索引失效,性能降低?那是否一定收到影响呢?真的就不会使用索引了吗? 本文的测试数据 ...