OSDN Git Service

addid library source 20140221
[zither/ds-zither.git] / libms / delim_r.c
1 // delim_r.c
2 // masashi shimakura 20140223
3
4 #include<stdio.h>
5 #include<string.h>
6 #include <errno.h>
7 #include <stdlib.h>
8
9 #include "libms.h"
10
11
12
13 char * delim_r(char * base, char * backdata, char deli, int count)
14 {
15 int co, len, ret;
16 char * tmp_data1 = (char *)calloc(BUF_LEN, sizeof(char));
17 char * tmp_data2 = (char *)calloc(BUF_LEN, sizeof(char));
18 char * tmp_data3 = (char *)calloc(BUF_LEN, sizeof(char));
19
20 len = 0;
21 ret = 0;
22
23 len = char_count(base, deli);
24
25
26 if(count >= 0 && count <= len){
27    tmp_data3 = safe_sprintf(tmp_data3, BUF_LEN,"%c", deli);
28    for(co = count; co <= len; co++){
29       tmp_data1 = delim_get(base, tmp_data1, deli, &ret, co);
30       tmp_data2 = safe_strncat(tmp_data2, tmp_data1, BUF_LEN); 
31       if(co < len){
32          tmp_data2 = safe_strncat(tmp_data2, tmp_data3, BUF_LEN); 
33          }
34       tmp_data1 = null_free(tmp_data1);
35       }
36    backdata = safe_memcpy(backdata, tmp_data2, BUF_LEN);
37    }
38 else{
39    backdata = safe_memcpy(backdata, base, BUF_LEN);
40    }
41
42 free(tmp_data1);
43 free(tmp_data2);
44 free(tmp_data3);
45
46 return backdata;
47 }
48
49