/*
6.编程 实现 memcpy() 函数,
大家可能都知道:
原型:extern void *memcpy(void *dest, void *src, unsigned int count);
用法:#include <string.h>
功能:由src所指内存区域复制count个字节到dest所指内存区域。
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;
}
这里写这些仅供和一些编程爱好者进行交流,分享。