编写一个memmove函数,实现内存拷贝

void* my_memmove(void *des,const void *src,int size)
{
	char *Des=(char*)des;
	char *Src=(char*)src;
	assert(Des && Src);
	int len=strlen(Src);
	assert(size >0 && size <len);
	if(Des < Src || Des+size > Src+len)
	{
		while(size)
		{
			*Des++=*Src++;
			--size;
		}
	}else
	{
		Des=Des+size;
		Src=Src+size;
		while(size)
		{
			*Des--=*Src--;
			--size;
		}
	}
	return des;
}
时间: 2024-11-05 22:36:23

编写一个memmove函数,实现内存拷贝的相关文章

【C语言】 字符串操作函数及内存拷贝函数归总

今天在这里把零散的一些常用的字符串操作函数和内存拷贝函数进行一下归总实现. 一 . 字符串操作函数 字符串操作函数有很多,这里我列举一些常用的函数,以及自实现的代码: 字符串拷贝函数: 函数原型: char* my_strcpy(char* dst,const char* src) strcpy(): char* my_strcpy(char* dst,const char* src) {     assert(dst);     assert(src);     char *ret = dst

利用map和reduce编写一个str2float函数,把字符串&#39;123.456&#39;转换成浮点数123.456:

from functools import reduce CHAR_TO_FLOAT = { '0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '.': -1 } def str2float(s): nums=map(lambda x:CHAR_TO_FLOAT[x],s) #print(list(nums)) point = 0 def str_division(f,n): nonlo

&lt;笔试&gt;&lt;面试&gt;编写一个排序函数,实现,既可以排序整形数组,又可以排序字符串。

思路:仿照qsort函数运用函数指针实现排序整形数组.排序字符串的功能. 首先,编写整形数组比较函数和字符串比较函数:其次,仿照qsort函数将首元素地址.元素个数.元素大小.比较函数 传参编写熟悉的冒泡排序函数:最后,举例验证函数正确性. /******************************/ //1.编写冒泡排序,可以排序整形数组,也可以排序字符串. #include<stdio.h> #include<stdlib.h> #include<assert.h&g

编写一个模版函数count

返回值是数组的a[0:n-1]的数组个数. 知识点:数组的两个特殊性质对我们定义和使用作用在数组上的函数有影响,这两个性质分别是:不允许拷贝数组以及使用数组时(通常)会将其转换成指针.因为不能拷贝数组,所以我们无法以值传递的方式使用数组参数.因为数组会被转换成指针,所以当我们为函数传递一个数组时,实际上传递的饰指向数组首元素的指针. ex: void print(const int*); void print(const int[]); void print(const int[10]) 答案:

编写一个js函数,该函数有一个n(数字类型),其返回值是一个数组,该数组内是n个随机且不重复的整数,且整数取值范围是[2,32]

今天在公众号里边看到这个问题,就自己写了下,发现自己还是有许多没注意到的,在此记录, //返回一个随机整数 function getRandom( min , max ){ var rand = Math.round( Math.random() * (max - min) + min ); return rand; }; //重复性验证 function isRepeat(arr,n){ if (arr.indexOf(n) > -1) { return true; }; return fal

编写一个排序函数,实现数字排序。排序方法由客户函数实现,函数参数个数为两个,两个参数的关系作为排序后的元素间的关系。

<script>function SortNumber(obj,func) //定义通用排序函数{ //参数验证,如果第一个参数不是数组或第二个参数不是函数则抛出异常 if(!(obj instanceof Array) || !(func instanceof Function)) { var e = new Error(); //生成错误信息 e.number = 100000; //定义错误号 e.message = "参数无效"; //错误描述 throw e; /

编写一个javscript函数 fn,该函数有一个参数 n(数字类型),其返回值是一个数组,该数组内是 n 个随机且不重复的整数,且整数取值范围是 [2, 32]。

首先定义个fn用来返回整数的取值范围: function getRand(a,b){ var rand = Math.ceil(Math.random()*(b-a)+a); return rand; } 再写一个func用来做去重校验: function checkArrIn(rand,array){ if(array.indexOf(rand) > -1){ return true } return false; } 最后是整体实现: function fn(n, min, max) { v

编写一个模块函数fill

给数组a[start:end-1]赋值value. 官方答案: template <class T> void fill(T* a, int start, int end, const T& value) {// Set a[start:end-1]. for (int i = start; i < end; i++) a[i] = value; }

编写一个多线程函数实现对数组排序,要求: 1.至少用两个线程 2.数组的元素值可以事先定义好,或者可以从键盘输入(增加一个线程)。 3.用一个线程对数组排序,用另一个线程输出排序结果。 4.保证先排好序,再输出。

#include"stdio.h" #include"pthread.h" #include"semaphore.h" static int datbuf[10] = {0}; static int n; sem_t sem1,sem2,sem3; void *do_input(void *pvoid) { int i; sem_wait(&sem1); printf("please input data\n"); f