본문 바로가기

Native/C++

[Array]array_push_str함수의 구현

[Array]array_push_str함수의 구현
array_push_str: 배열의 끝에 문자열의 주소를 추가한다.

gcc ver: 2.95.4
os: linux
compile: gcc -o test test.c
require memory free: y

[code]
#include <stdio.h>
#include <malloc.h>

int array_push_str(char ***,char *,int *);

int main(int argc,char **argv){

        int len=0;
        char **test;
        int cnt=0;
        
        array_push_str(&test,"array_push_str",&len);
        array_push_str(&test,":-)",&len);
        array_push_str(&test,"This is sample",&len);
        array_push_str(&test,"^^;",&len);
        
        for(cnt;cnt<len;++cnt){
            
            printf("%s %d %d\n",test[cnt],strlen(test[cnt]),len);

        }

        free(test);

        return 0;

}

int array_push_str(char ***array,char *push_str,int *len){

    char **tmp_array;
    register int cnt=0;

    tmp_array=(*array);
    
    if(((*array)=(char **)malloc(sizeof(char *)*((*len)+1)))==NULL) return 1;
    memset((*array),0x0,sizeof(char *)*((*len)+1));

    for(cnt;cnt<(*len);++cnt){

        (*array)[cnt]=tmp_array[cnt];

    }

    if((*len)>0) free(tmp_array);
    
    (*array)[cnt]=push_str;

    ++(*len);

    return 0;

}
[/code]

이럴땐 c++의 템플리트와 오버로딩 기능이 부럽군요.^^;

'Native > C++' 카테고리의 다른 글

[String]join함수의 구현  (0) 2013.10.02
[String]str_replace함수의 구현  (0) 2013.10.02
[Array]array_push_chr함수의 구현  (0) 2013.10.02
[String]dstr_cat함수의 구현  (0) 2013.10.02
[File]getline함수의 구현  (0) 2013.10.02