|
蓝森林 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); |
| |