设为首页 加入收藏

TOP

Linux C对字符串中对部分子串的查找和替换
2014-11-24 07:23:49 来源: 作者: 【 】 浏览:1
Tags:Linux 字符串 分子 查找 替换

/*********************************************************************************
* fine name :respacestr


* description : respace some characters from a string.
* author : hiland email: pengsor@gmail(dot)com
* license : GPL
********************************************************************************


#include
#include
#include


char * respacestr(char * sdev,char * strs,char * strr)
{
char * p;
int lens = strlen(strs),lenr;
int len;
int slen = strlen(sdev);
if(strr == NULL) lenr = 0;
else lenr = strlen(strr);


len = lenr - lens;
while((p = strstr(sdev,strs))!=NULL){
printf("%d - %s\n",slen,sdev);
if(len > 0) { //替换的文字比原来的长,则要扩堆。 比如 用"UUU" 替换"ui"。以防原来空间不够
sdev = (char *)realloc(sdev,slen+len);
p = strstr(sdev,strs);
memmove(p+lenr,p+lens,strlen(p+lens));
memcpy(p,strr,lenr);
} else if(len == 0) {
memcpy(p,strr,lenr);
} else {
memmove(p+lenr,p+lens,strlen(p+lens));
if(lenr!=0) memcpy(p,strr,lenr);
}
slen +=len;
}
*(sdev+slen) = 0;
return sdev;


}


int main(int argc,char * argv[])
{
char sdev[] = "abcdefghiyuijklmnopqryuistuvwxyyuizyuiE";
char * pdet;
char * p ;
if(argc > 2) {
fprintf(stderr,"usage argc error\n");
exit(1);
} else if(argc == 2){
p = argv[1];
} else if(argc == 1) {
p = NULL;
printf("P==NULL\n");
}
pdet = malloc(sizeof(sdev));
strcpy(pdet,sdev);
printf("%s\n",pdet);
pdet = respacestr(pdet,"yui",p);


printf("%s\n",pdet);


return 0 ;


}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux内核 container_of 宏和 off.. 下一篇Python:一个用来批量处理文件违规..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Java 学习线路图是怎 (2025-12-25 15:19:15)
·关于 Java 学习,有 (2025-12-25 15:19:12)
·有没有Java swing教 (2025-12-25 15:19:09)
·Start, Stop, and Di (2025-12-25 14:50:57)
·C语言入门教程:零基 (2025-12-25 14:50:54)