53 lines
1 KiB
C
53 lines
1 KiB
C
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include "utarray.h"
|
|
|
|
typedef struct {
|
|
int id;
|
|
char *dept;
|
|
} Data;
|
|
|
|
void Data_copy(void* vdst, const void* vsrc) {
|
|
Data *dst = (Data*)vdst;
|
|
Data *src = (Data*)vsrc;
|
|
dst->id = src->id;
|
|
dst->dept = strdup(src->dept);
|
|
}
|
|
|
|
void Data_deinit(void* vdata) {
|
|
Data *data = (Data*)vdata;
|
|
free(data->dept);
|
|
}
|
|
|
|
int main() {
|
|
UT_array *datas;
|
|
int i;
|
|
Data d, *dp;
|
|
char tmp[2] = "A";
|
|
|
|
UT_icd data_icd = {sizeof(Data), NULL, Data_copy, Data_deinit};
|
|
utarray_new(datas, &data_icd);
|
|
|
|
for(i = 0; i < 10; i++) {
|
|
d.id = i;
|
|
d.dept = strdup(tmp);
|
|
utarray_push_back(datas, &d);
|
|
Data_deinit(&d);
|
|
tmp[0] += 1;
|
|
}
|
|
|
|
d.id = 25;
|
|
d.dept = strdup("Z");
|
|
utarray_replace(datas, &d, 5);
|
|
Data_deinit(&d);
|
|
|
|
for(dp = (Data*)utarray_front(datas);
|
|
dp != NULL;
|
|
dp = (Data*)utarray_next(datas, dp)) {
|
|
printf("id: %d dept: %s\n", dp->id, dp->dept);
|
|
}
|
|
|
|
utarray_free(datas);
|
|
return 0;
|
|
}
|