Buonasera, devo svolgere un semplice esercizio di acquisizione e visualizzazione di stringhe utilizzando printf e scanf, ma non riesco a farlo funzionare. Potreste gentilmente indicarmi cosa ho sbagliato nel mio codice? Premetto di essere alle prime armi con la programmazione in generale.
Vi ringrazio anticipatamente per eventuali risposte.


codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define D 21


int main()
{
    int N, i;
    char stringa[N][D];
    const char* s;
    
    printf("Inserisci numero stringhe: ");
    scanf("%d", &N);
    while ((N<1) || (N>99))
    {printf("\nNumero non consentito! Reinserire numero stringhe: ");
    scanf ("%d", &N);}
    printf("\n\n");
    for(i=0;i<N;i++)
    {printf("Inserisci stringa %d: ", i+1);
    scanf("%s", s);
    if (strlen(s)==0)
        { printf("Vuota - ripeti\n");
        i--;}
    else 
        {if(strlen(s)>D)
            {printf("Troppo lunga! Max %d caratteri\n", D-1) ;
            i--;}
        else
            {strcpy(stringa[i], s);}}
    }
    printf("\n\nLe stringhe inserite sono: \n");
    for(i=0;i<N;i++)
    {printf("Stringa %d = %s\n", i+1, stringa[i]);}
    return 0;
}