Code
1//man为主字符串,point是要匹配出来的字符串,cmp为分隔符;比如 man 为:adfaasf eth34 asdfaf, point为et ,分隔符为空格,则可匹配出eth34
2char * 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~)
31char * 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}
1//man为主字符串,point是要匹配出来的字符串,cmp为分隔符;比如 man 为:adfaasf eth34 asdfaf, point为et ,分隔符为空格,则可匹配出eth34
2char * 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~)
31char * 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}