使用memmove对数组中的指定内容进行删除操作

#include <iostream>
#include <stdlib.h>
#include <string.h>
using namespace std;

int main()
{
	int i,len,cnt;
	unsigned short t;
	char *p,*p_end;
	char buffer[200];
    char s[256]="使用memmove函数对数组中指定的内容进行删除操作";
    char *q=s;
    int temp;
    printf("before delete:\n%s\n\n",s);
    p=strstr((const char*)s,"memmove");//指向了首地址,即m 
   	p_end=strstr((const char*)s,"函数");//结束地址 
   	len = p_end-p;//计算长度 
	printf("len=%d\r\n",len);
	temp=p-s;						//计算即将删除的内容与数组首地址的偏移量 
    memmove(s+temp,s+temp+len,strlen(s)+1-len);			//把后面的内容往前面移动,实现删除的操作 
	printf("%s\n",s);   
	
	//继续删除 “中指定的内容” 
	p=strstr((const char*)s,"中");//指向了首地址,即m 
   	p_end=strstr((const char*)s,"进行");//结束地址 
   	len = p_end-p;//计算长度 
	printf("len=%d\r\n",len);
	temp=p-s;						//计算即将删除的内容与数组首地址的偏移量 
    memmove(s+temp,s+temp+len,strlen(s)+1-len);			//把后面的内容往前面移动,实现删除的操作 
	printf("%s\n",s);   
    return 0;
}


内存移动函数,参数为目标地址,源地址,长度。

注意,这是一个会改变数组内容的函数。

配合strstr使用效果非常好,注意使用strstr定位时,尽量选用唯一的标识。

上述程序执行结果:



发布了54 篇原创文章 · 获赞 62 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/u013053268/article/details/70213289