- 论坛徽章:
- 15
|
本帖最后由 yulihua49 于 2010-04-01 17:53 编辑
rt
depderik 发表于 2005-09-14 11:04
- /************************************************************************/
- /*function:strsubst 替换字符串函数 */
- /*description:用'str'替换'from'的前cnt个字符 */
- /************************************************************************/
- char *strsubst(char *from,int cnt,char *str)
- {
- int i;
- register char *cp, *cp1, *cp2;
- if(!from)
- return 0;
- i = strlen(from);
- if(cnt < 0)
- cnt = 0;
- else if(cnt > i)
- cnt = i;
- else ;
- i = str ? strlen(str) : 0;
- if(i < cnt) /* delete some char*/
- {
- cp1 = from + i;
- cp = from + cnt;
- while(*cp)
- *cp1++ = *cp++;
- *cp1 = 0;
- }
- else if (i > cnt) /* extend some*/
- {
- cp2 = from + cnt;
- cp = from + strlen(from);
- cp1 = cp + i - cnt;
- while(cp >= cp2)
- *cp1-- = *cp--;
- }
- else ;
- if(str)
- strncpy(from, str, i);
- return (from + i);
- }
复制代码 返回指向替换后边的字节。
这个函数先删除若干字节再插入。应该先使用正则表达式查找旧串,设定替换的起点和字节数在调用本函数。返回指针也是精心策划的,用于循环连续替换。
前面有个函数返回串头,要继续搜索替换找不到新的起点。
这个函数运用的例子,连续替换环境变量的宏代换;
MYDIR=$HOME/$SEND/mydir
替换成:
MYDIR=/home/sdbc/send/mydir
这点程序居然是不良信息,害得我不得不用附件传。请版主检查一下该文件有何不良信息!!!
envsub.rar
(548 Bytes, 下载次数: 13)
|
|