蓝森林首页 | 返回主页 | 本站地图 | 站内搜索 | 联系信箱 |
 您目前的位置:首页 > 自由软件 > 技术交流 > 应用编程


    

蓝森林 http://www.lslnet.com 2006年6月6日 10:18


C的string.h里有没有字符串替换函数呢?

rt

C的string.h里有没有字符串替换函数呢?

谭的书上说strcpy(str1,str2,5)可以拷贝str2的前5个字符,我这儿怎么就是编译不过呢?

C的string.h里有没有字符串替换函数呢?

strncpy(str1,str2,5)

C的string.h里有没有字符串替换函数呢?

C的string.h里有没有字符串替换函数呢?

C库里面是没有字符串替换函数的,自己写一个吧。贴一个现在用的^_^
[code]
// 替换字符串中特征字符串为指定字符串
int ReplaceStr(char *sSrc, char *sMatchStr, char *sReplaceStr)
{
        int  StringLen;
        char caNewString[MAX_MSG_LENGTH];

        char *FindPos = strstr(sSrc, sMatchStr);
        if( (!FindPos) || (!sMatchStr) )
                return -1;

        while( FindPos )
        {
                memset(caNewString, 0, sizeof(caNewString));
                StringLen = FindPos - sSrc;
                strncpy(caNewString, sSrc, StringLen);
                strcat(caNewString, sReplaceStr);
                strcat(caNewString, FindPos + strlen(sMatchStr));
                strcpy(sSrc, caNewString);

                FindPos = strstr(sSrc, sMatchStr);
        }

        return 0;
}
[/code]

C的string.h里有没有字符串替换函数呢?

very thanks!

C的string.h里有没有字符串替换函数呢?

C的string.h里有没有字符串替换函数呢?

/*C字符串替换函数
调用成功返回指向被替换后新字符串的指针失败返回NULL
调用之后用free()释放*/
char *strrep(char *str,char *str1,char *str2)
{
        char *s;
        unsigned long int len;
        register unsigned long int i=0;
        char *temp;
        temp=str;
        while (strstr(temp,str1)!=NULL){
            temp=strstr(temp,str1)+strlen(str1);
                i++;}
        len=(strlen(temp)-strlen(str1)*i+strlen(str2)*i)*sizeof(char);
        s=(char *)malloc(len);
        if (s!=NULL){
        s="s";
        while (strstr(str,str1)!=NULL)
                {
                s=strncat(s,str,(strstr(str,str1)-str));
                s=strcat(s,str2);
                str=strstr(str,str1)+strlen(str1);}
    s=strcat(s,str);
    s=s+1;
    return(s);}
        else{
                return NULL;}
}
注:str表示源字符串 str1表示特征字符串 str2表示指定字符串

C的string.h里有没有字符串替换函数呢?

C的string.h里有没有字符串替换函数呢?

以前也写过一个
是为了替换掉SQL语句中的一些字符
例如
select * from tab where id=':a'
--->;
select * from tab where id='Sam'

[code]
/*
descript:replace str,返回一个替换以后的字符串,用完之后要free()
success:return 1
error:return 0
BUG:"select * from tab where id=':a' and name =':aa'",this is not support,this function is just simple str_replace ,not support all SQL language
*/
char *replacestr(char *strbuf, char *sstr, char *dstr)
{       char *p,*p1;
        int len;

        if ((strbuf == NULL)||(sstr == NULL)||(dstr == NULL))
                return NULL;

        p = strstr(strbuf, sstr);       //返回字符串第一次出现的地址,否则返回NULL
        if (p == NULL)  /*not found*/
                return NULL;

        len = strlen(strbuf) + strlen(dstr) - strlen(sstr);
        p1 = malloc(len);
        bzero(p1, len);
        strncpy(p1, strbuf, p-strbuf);
        strcat(p1, dstr);
        p += strlen(sstr);
        strcat(p1, p);
        return p1;
}
[/code]

C的string.h里有没有字符串替换函数呢?

你的头像太大了,影响我的页面了

C的string.h里有没有字符串替换函数呢?

用C++标准库还是方便

C的string.h里有没有字符串替换函数呢?

STRCPY(3)              FreeBSD Library Functions Manual              STRCPY(3)

NAME
     strcpy, strncpy -- copy strings

LIBRARY
     Standard C Library (libc, -lc)

SYNOPSIS
     #include <string.h>;

     char *
     stpcpy(char *dst, const char *src);

     char *
     strcpy(char * restrict dst, const char * restrict src);

     char *
     strncpy(char * restrict dst, const char * restrict src, size_t len);



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 蓝森林网站 版权所有。 E-mail : webmaster@lslnet.com