Having trouble understanding and getting to work String operations in the following code. Please help, me and my study colleagues are losing our minds over this. ty. This is a simple method to fill a multi dimensional array with custom strings - which for some reason we cannot figure out for the life of us does simply not work - spits out random junk from the memory instead. Also allocation amounts don't seem to be quite right.
#include <stdio.h>
#include <malloc.h>
#include <string.h>
char*** createKeyPad(int rows, int cols, int num_chars) {
    if(num_chars <= 0) return NULL;
    char needed = 'a';
    char** aptr = NULL;
    char*** rptr = NULL;
    aptr = (char**) malloc(rows * cols * sizeof(char*));
    if(aptr == NULL) {
        return NULL;
    }
    rptr = (char***) malloc(rows * sizeof(char**));
    if(rptr == NULL) {
        free(aptr);
        return NULL;
    }
    for(int row = 0; row < rows; row++) {
        rptr[row] = aptr + (row * cols);
    }
    for(int row = 0; row < rows; row++) {
        for(int col = 0; col < cols; col++) {
            char* string;
            for(int i = 0; i < num_chars; i++) {
                string[i] = needed;
            }
            string[num_chars] = '\0';
            rptr[row][col] = string;
            printf("%s", string);
        }
    }
    printf("%s", "hallo");
    return rptr;
}
int main() {
    printf("Hello, World!\n");
    char*** keypad = createKeyPad(5, 5, 3);
    for(int row = 0; row < 5; row++) {
        for(int col = 0; col < 5; col++) {
            printf("%s", keypad[row][col]);
        }
        printf("\n");
    }
   
}
 
     
    