generic dynamic array in C supporting various data types such as int, char, float, and char* (strings). (Header Only btw).
- Dynamically resizes on demand
- Type-safe via macro-based initialization
- Supports any data type
- Easy printing with format specifiers
Use the DYNA_INIT(Type) macro to define a dynamic array type:
DYNA_INIT(int) Dyna;
Dyna dyna = {0};
dyna.start = malloc(DYNA_INITIAL_CAP * sizeof(int));
dyna.capacity = DYNA_INITIAL_CAP;
dyna.size = sizeof(int);Use dyna_append(&array, value) to add elements dynamically:
for (int i = 0; i < 50; ++i) {
dyna_append(&dyna, i);
}Use dyna_print(&array, format) to print the array:
dyna_print(&dyna, "%i"); // For intsDon't forget to free the memory:
dyna_free(&dyna);DYNA_INIT(int) Dyna;
Dyna dyna = {0};
dyna.start = malloc(DYNA_INITIAL_CAP * sizeof(int));
dyna.capacity = DYNA_INITIAL_CAP;
dyna.size = sizeof(int);
for (int i = 0; i < 50; ++i) dyna_append(&dyna, i);
dyna_print(&dyna, "%i");
dyna_free(&dyna);DYNA_INIT(char) DynaChar;
DynaChar dynac = {0};
dynac.start = malloc(DYNA_INITIAL_CAP * sizeof(char));
dynac.capacity = DYNA_INITIAL_CAP;
dynac.size = sizeof(char);
for (int i = 0; i < 26; ++i) dyna_append(&dynac, 'a' + i);
dyna_print(&dynac, "'%c'");
dyna_free(&dynac);DYNA_INIT(float) DynaFloat;
DynaFloat dynaf = {0};
dynaf.start = malloc(DYNA_INITIAL_CAP * sizeof(float));
dynaf.capacity = DYNA_INITIAL_CAP;
dynaf.size = sizeof(float);
for (int i = 0; i < 10; ++i) dyna_append(&dynaf, i + 0.5f);
dyna_print(&dynaf, "%f");
dyna_free(&dynaf);DYNA_INIT(char*) DynaStr;
DynaStr dynas = {0};
dynas.start = malloc(DYNA_INITIAL_CAP * sizeof(char*));
dynas.capacity = DYNA_INITIAL_CAP;
dynas.size = sizeof(char*);
for (int i = 0; i < 10; ++i) dyna_append(&dynas, "Hello There");
dyna_print(&dynas, "\"%s\"");
dyna_free(&dynas);
# This is my Implementation of Dynamic Array in C.
I am still learning and experimenting things out on myself. There could be problems with my implementation of dynamic array in C. If you find any mistakes or have any suggestions please do let me know.I am still learning and experimenting things out on myself. If you find any mistakes or have any suggestions please do let me know.