/*
6.编程 实现 memcpy()  函数,
大家可能都知道: 


  原型:extern void *memcpy(void *dest, void *src, unsigned int count);


用法:#include <string.h>


功能:由src所指内存区域复制count个字节到dest所指内存区域。

*/

下面就是 这个函数的实现过程。


#include  <stdio.h>
#include <stdlib.h>
#include <assert.h>
void*  memcpy (void * to,void * from, unsigned int count){


	assert ((to!= NULL)&&(from!=NULL));//保证 from 和to 的合法性

	char *temFrom = (char*)from ;
	char * temTo =  (char*)to;
	while (count-->0){//先去判断 ,之后 自减一,
		*temTo++ = *temFrom++ ; //先赋值 ;之后指针加一
		
	}
	return  to;//返回头指针


}
下面我们来测试一下
void  main (){


	char  string [] = "Hello everyone!";
	char  string1[20];
	memcpy (string1,string,5);
	string1[5]= '\0';//最后一个位置设置为空

	printf ("string1:%s\n",string1);
	system("pause");
}

/*
 26题:编程实现删除字符中所有的指定字符
*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>



char * deleteChar (char *str,char c){
	char *head =  NULL;
	char *p  = NULL;
	if (str  == NULL){
		return  NULL;
	}
	head = p= str;//指向字符串头部,
	while(*p)
	{//(*p++),之后把 p++ 删除能这样写吗?,因为这样的判断*p ,后 p 自增1 ,p指到下一个位置了,即从第二个位置开始赋值了,
		if (*p != c){
		//	*str++ = *p; //注释部分和这句话等价,即先赋值,之后str ++;
			*str = *p;
			str++;
		
		}
		p++;
	}
	*str = '\0';
	return  head;
}
//写一个测试程序如下:


int main(){
	char string[] = "chang chang chang";
	char c  =0;
	printf ("请输入一个字符:");
	scanf ("%c",&c);
	printf ("%s\n",string);


	char *p = 	deleteChar (string,c);
	printf ("%s\n",string);
	system("pause");
	return 0;
}













这里写这些仅供和一些编程爱好者进行交流,分享。