免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 62670 | 回复: 18
打印 上一主题 下一主题

[函数] C的string.h里有没有字符串替换函数呢? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-09-14 11:04 |只看该作者 |倒序浏览
rt

论坛徽章:
0
2 [报告]
发表于 2005-09-14 11:11 |只看该作者

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

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

论坛徽章:
0
3 [报告]
发表于 2005-09-14 11:14 |只看该作者

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

strncpy(str1,str2,5)

论坛徽章:
8
白羊座
日期:2015-01-21 18:35:03巳蛇
日期:2015-02-03 17:30:37处女座
日期:2015-02-03 17:31:02羊年新春福章
日期:2015-02-03 17:31:21巨蟹座
日期:2015-02-05 16:01:06申猴
日期:2015-02-05 16:01:31摩羯座
日期:2015-02-05 16:01:41酉鸡
日期:2015-02-05 16:02:37
4 [报告]
发表于 2005-09-14 11:17 |只看该作者

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

[quote]原帖由 "depderik"]谭的书上说strcpy(str1,str2,5)可以拷贝str2的前5个字符,我这儿怎么就是编译不过呢?[/quote 发表:

  1. strcpy(str1, str2);
  2. // or
  3. strncpy(str1,str2,5);
复制代码

论坛徽章:
8
白羊座
日期:2015-01-21 18:35:03巳蛇
日期:2015-02-03 17:30:37处女座
日期:2015-02-03 17:31:02羊年新春福章
日期:2015-02-03 17:31:21巨蟹座
日期:2015-02-05 16:01:06申猴
日期:2015-02-05 16:01:31摩羯座
日期:2015-02-05 16:01:41酉鸡
日期:2015-02-05 16:02:37
5 [报告]
发表于 2005-09-14 11:21 |只看该作者

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

C库里面是没有字符串替换函数的,自己写一个吧。贴一个现在用的^_^

  1. // 替换字符串中特征字符串为指定字符串
  2. int ReplaceStr(char *sSrc, char *sMatchStr, char *sReplaceStr)
  3. {
  4.         int  StringLen;
  5.         char caNewString[MAX_MSG_LENGTH];

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

  9.         while( FindPos )
  10.         {
  11.                 memset(caNewString, 0, sizeof(caNewString));
  12.                 StringLen = FindPos - sSrc;
  13.                 strncpy(caNewString, sSrc, StringLen);
  14.                 strcat(caNewString, sReplaceStr);
  15.                 strcat(caNewString, FindPos + strlen(sMatchStr));
  16.                 strcpy(sSrc, caNewString);

  17.                 FindPos = strstr(sSrc, sMatchStr);
  18.         }

  19.         return 0;
  20. }
复制代码

论坛徽章:
0
6 [报告]
发表于 2005-09-14 11:40 |只看该作者

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

very thanks!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
7 [报告]
发表于 2005-09-14 12:05 |只看该作者

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

[quote]原帖由 "depderik"]very thanks![/quote 发表:


这英语...昏.

论坛徽章:
0
8 [报告]
发表于 2005-09-23 23:29 |只看该作者

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表示指定字符串

论坛徽章:
0
9 [报告]
发表于 2005-09-24 00:14 |只看该作者

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

[quote]原帖由 "depderik"]谭的书上说strcpy(str1,str2,5)可以拷贝str2的前5个字符,我这儿怎么就是编译不过呢?[/quote 发表:

你是不是晕了,应该用strncpy

论坛徽章:
0
10 [报告]
发表于 2005-09-24 08:06 |只看该作者

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

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


  1. /*
  2. descript:replace str,返回一个替换以后的字符串,用完之后要free()
  3. success:return 1
  4. error:return 0
  5. 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
  6. */
  7. char *replacestr(char *strbuf, char *sstr, char *dstr)
  8. {       char *p,*p1;
  9.         int len;

  10.         if ((strbuf == NULL)||(sstr == NULL)||(dstr == NULL))
  11.                 return NULL;

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

  15.         len = strlen(strbuf) + strlen(dstr) - strlen(sstr);
  16.         p1 = malloc(len);
  17.         bzero(p1, len);
  18.         strncpy(p1, strbuf, p-strbuf);
  19.         strcat(p1, dstr);
  20.         p += strlen(sstr);
  21.         strcat(p1, p);
  22.         return p1;
  23. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP