[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++의 템플리트와 오버로딩 기능이 부럽군요.^^;
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 |