c语言清除字符串不用指针,指针 剔除字符串

C/C++ code#include

#include

char* find_str_pos(char* srcstr, char *substr)

{

if(srcstr == NULL || substr == NULL)

return (char *) NULL;

if(!*srcstr || !*substr)

return (char *) NULL;

char *read_ptr = srcstr;

char *rm_ptr = substr;

while(*srcstr)

{

read_ptr = srcstr;

rm_ptr = substr;

do

{

if (*rm_ptr == '\0')

return srcstr;

} while (*read_ptr++ == *rm_ptr++);

srcstr++;

}

return (char *) NULL;

}

int main()

{

char readbuf[100] = "AABBCCDDEE";

char rmbuf[10] = "CC";

char newbuf[100] = {0};

int readlen = strlen(readbuf);

int rmlen = strlen(rmbuf);

char *pos = find_str_pos(readbuf,rmbuf); //指向删除部分开头

int poslen = strlen(pos);

if(!pos)

return 0; //字符串不存在相同项

int offset = 0;

offset = readlen - poslen;

memcpy(newbuf,readbuf,offset);

memcpy(newbuf+offset,pos+rmlen,poslen-rmlen);

return 0;

}

------解决方案--------------------

仅供参考C/C++ code#include

#include

char s[256];

char *p;

int r,n,i;

int main() {

while (1) {

printf("请输入一行文字(空行结束),\"%%20\"将替换为\" \",\"你懂得\"将替换为\"XXXXXX\":\n");

fgets(s,256,stdin);

if ('\n'==s[0]) break;

p=s;

while (1) {

p=strstr(p,"%20");

if (p) {

memmove(p+1,p+3,strlen(p)-3+1);

p[0]=' ';

} else break;

}

p=s;

while (1) {

p=strstr(p,"你懂得");

if (p) {

memmove(p+6,p+6,strlen(p)-6+1);

for (i=0;i<6;i++) p[i]='X';

} else break;

}

printf("%s",s);

}

return 0;

}

//请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX":

//abcdefg%20helloworld%20something.pdf

//abcdefg helloworld something.pdf

//请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX":

//这是测试文字你懂得,在这个你懂的地方,就得做你懂得的事

//这是测试文字XXXXX,在这个你懂的地方,就得做XXXXX的事

//请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX":

//

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值