|
Posted on
2009-11-21 19:45
放飞自我
阅读( 554)
评论()
收藏
举报
 Code 1 //man为主字符串,point是要匹配出来的字符串,cmp为分隔符;比如 man 为:adfaasf eth34 asdfaf, point为et ,分隔符为空格,则可匹配出eth34 2 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 }
|