`
microjava
  • 浏览: 309378 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

c语言编程之字符串操作

阅读更多
//在s串中查找与s1相匹配的字符串,找到后用s2将s中与s1相配的串替换掉
#include<stdio.h>
#include<string.h>

void replace(char *s,char *s1,char *s2);

int main(int argc,char *argv[])
{
  char s[256],s1[256],s2[256];

  if(argc!=4)
  {
    printf("Usage:%s 源串 查找串 替换串\n",argv[0]);
    exit(-1);
  }

  memset(s,sizeof(s),0x00);
  memset(s1,sizeof(s1),0x00);
  memset(s2,sizeof(s2),0x00);

  strcpy(s,argv[1]);
  strcpy(s1,argv[2]);
  strcpy(s2,argv[3]);

  replace(s,s1,s2);
  printf("%s\n",s);
}

void replace(char *s,char *s1,char *s2)
{
  char *p,*sp,*dp;
  int len,cnt;

  for(;;)
  {
    if((p=strstr(s,s1)) == NULL) return;

    len = strlen(s2)-strlen(s1);
    if(len)
    {
      //查找串和替换串长度不相同,需移位动作
      sp=p+strlen(s1);	//从sp所指位置移
      dp=sp + len;	//移到dp所指位置
      cnt = strlen(sp) + 1;	//所要移动的长度
      memmove(p+strlen(s1)+len,p+strlen(s1),cnt);
    }
    memcpy(p,s2,strlen(s2));
  }
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics