1
//man为主字符串,point是要匹配出来的字符串,cmp为分隔符;比如 man 为:adfaasf eth34 asdfaf, point为et ,分隔符为空格,则可匹配出eth342
char * find_str_separate(char * man , char * point, char * cmp)3


{4
int m_size;5
int p_size;6
int c_size;7
char * p;8
char * m;9
char * n;10

char buf[1024] =
{0,};11

12
if(NULL == man || NULL == point || NULL == cmp)13
return NULL;14
15
m_size = strlen(man);16
p_size = strlen (point);17
c_size = strlen(cmp);18

19
if(p_size > m_size || c_size > m_size )20
return NULL;21
memcpy(buf, man, sizeof(buf));22
p = strstr(buf, point);23
if(!p)24
return NULL;25
m = strtok(p, cmp);26
if(!m)27
return NULL;28
return m; 29
}30
//下面是字符串替换函数(这个是转帖的,上面是我写的,hO(∩_∩)O~)31
char * str_replace(const char * s, const char * f, const char * r)32


{33
int inum = 1;34
int if_len, ir_len;35
char * ps;36
char * pt;37
char * pn;38
char * pp;39

40
if(s==0 || f==0 || r==0) return 0;41
if(s[0]==0 || f[0]==0) return 0;42

43
if_len = strlen(f);44
ir_len = strlen(r);45

46
for(ps=(char *)s;;)47

{48
pt = strstr(ps, f);49
if(pt == 0)50

{51
inum += strlen(ps);52
break;53
}54
inum += (pt - ps) + ir_len;55
ps = pt + if_len;56
}57

58
pn = pp = malloc(inum);59
if(pn == 0) return 0;60
pn[inum-1] = 0;61

62
for(ps=(char *)s;;)63

{64
pt = strstr(ps, f);65
if(pt == 0)66

{67
memcpy(pp, ps, strlen(ps));68
break;69
}70

71
memcpy(pp, ps, pt - ps);72
pp += pt - ps;73
memcpy(pp, r, ir_len);74
pp += ir_len;75
ps = pt + if_len;76
}77

78
return pn;79
}
浙公网安备 33010602011771号