티스토리 뷰
반응형
예를들어,
// ...
char **result = NULL;
// ...
siz = explode(buf, "|", &result);
// ...
라고하면 buf 변수의 데이터를 |로 나누어 배열포인터를 반환한다.
int i;
for(i=1; i<siz; i++){
fprintf(stderr, "%02d[%s]\n", i, result[i]);
// ...
}
int string_explode(char *text, char *split, char ***result)
{
int i=0, fi=128;
int charCount=0;
int totalCount=0;
char *prevPoint=text;
char *currPoint=NULL;
char **ans=NULL;
ans=(char**)malloc(sizeof(char*)*fi);
do {
currPoint=strstr(prevPoint, split);
if(currPoint!=NULL){
totalCount=currPoint-text;
if(prevPoint==text) charCount=totalCount;
else charCount=currPoint-prevPoint;
if(fi <= i) {
ans=(char**)realloc( ans, sizeof(char*)*(i+fi));
fi+=128;
}
ans[i]=(char*)malloc(charCount);
strncpy(ans[i], prevPoint, charCount);
ans[i][charCount]='\0';
prevPoint=currPoint+strlen(split);
}
} while(currPoint!=NULL && ++i);
if(i>0){
ans=(char**)realloc( ans, sizeof(char*)*(i+1));
charCount=strlen(text)-totalCount;
ans[i]=(char*)malloc(charCount);
strncpy(ans[i], prevPoint, charCount);
ans[i][charCount]='\0';
++i;
*result=ans;
}
return i;
}
주의) 넘겨받은 result는 꼭 free시켜주어야 한다.
반응형
'Devolopment > C, C++' 카테고리의 다른 글
shmget() 공유 메모리 생성 (0) | 2015.06.01 |
---|---|
C에서 (쵸)간단하게 배열크기 구하는 법 (0) | 2015.06.01 |
Free the array at C (0) | 2015.05.29 |
C 언어로 정수에서 1이 설정된 비트(Bit) 수 세기 (0) | 2015.05.29 |
chr_replace() (0) | 2015.05.29 |
반응형
최근에 달린 댓글