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);