#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定位时,尽量选用唯一的标识。
上述程序执行结果: