From 2a3cb53aa1cf6d50bb41dd2afc15175731e065f9 Mon Sep 17 00:00:00 2001 From: my name Date: Sat, 30 May 2026 19:45:30 +0200 Subject: [PATCH] added constructor function --- qscr/c/gai/fixedynarr.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/qscr/c/gai/fixedynarr.c b/qscr/c/gai/fixedynarr.c index ea4387d..71082e0 100644 --- a/qscr/c/gai/fixedynarr.c +++ b/qscr/c/gai/fixedynarr.c @@ -10,29 +10,39 @@ struct IntArray{ void readintarray(struct IntArray *input) { printf("inputlength:%zu\n", input->length); - for (int i = 0; i < input->length; i++) { + for (size_t i = 0; i < input->length; i++) { printf("digit:%d = %d\n", i, input->data[i]); } } +struct IntArray *create_int_array(size_t length) { + struct IntArray *myintarray = malloc(sizeof(struct IntArray)); /* allocate memory for struct */ + + myintarray->data = malloc(sizeof(int) * length); /* make sure the pointer in the struct points to the array */ + myintarray->length = length; //forgot to actually assign a value to the struct + + if (myintarray->data == NULL) { + exit(0); + } + + return myintarray; +} + int main() { srand(time(NULL)); printf("how many numbers?\n"); int length; scanf("%d", &length); - struct IntArray *myintarray = malloc(sizeof(struct IntArray)); /* allocate memory for struct */ - int *myarray = malloc(sizeof(int) * length); /* allocate memory for array that the struct points to */ + struct IntArray *myintarray = create_int_array(length); - myintarray->data = myarray; /* make sure the pointer in the struct points to the array */ - myintarray->length = length; //forgot to actually assign a value to the struct for (int i = 0; i < length; i++) { myintarray->data[i] = rand() % 10; printf("number:%d = %d\n",i,myintarray->data[i]); - } + } readintarray(myintarray); - + free(myintarray->data); free(myintarray);