Criando uma estrutura alocada dinamicamente com uma sequência alocada dinamicamente 2D

Estou tentando digitalizar em uma grade de letras.cases é o número de grades de letras er, c são para o número de linhas e colunas de cada grade. Imaginei que poderia criar uma matriz de estruturas com matrizes 2D dentro. Estou trabalhando nisso há algumas horas e ainda está me dando problemas:

Advertências:

Aviso C4477 (Linha 12) -'Scanf_s': a sequência de formato '% s' requer um argumento do tipo 'char *', mas o argumento variado 1 tem o tipo 'int'Aviso C4473 (Linha 12) -'Scanf_s': argumentos insuficientes transmitidos para a string de formato

Erros:

Erro do compilador C2274

Erro do compilador C2461

O código:

scanf_s("%d", &cases);
struct grid { 
    char **grid; 
};
struct grid *grids = (struct grid*)malloc(cases * sizeof(struct grid));

for (i = 0; i < cases; i++) {
    scanf_s("%d %d", &r, &c);
    grids[i].grid = (char**)malloc(sizeof(char*) * r);
    for (k = 0; k < r; k++) {
        grids[i].grid[k] = (char*)malloc(sizeof(char) * (c+1));
        scanf_s("%s", grids[i].grid[k], (c+1));
    }           
}

questionAnswers(1)

yourAnswerToTheQuestion