Prova a dichiarare l'array in modo statico
codice:
char array_punts[5][5];
e ti funziona.
Nel tuo codice non stai inizializzando il numero di stringhe, e quindi fai un paciocco con la gestione di esse in memoria
Consiglio: inizia ad istanziare la memoria per gestire queste stringhe in modo dinamico, per esempio, se nel tuo codice avessi fatto un lavoro del genere
codice:
char *array_punts[5];
array_punts = (char **)malloc(sizeof(char) * 5);
avresti risolto perchè ora il numero di stringhe è inizializzato.
Molto meglio invece se fai così
codice:
char **array_punts;
int i;
array_punts = (char **)malloc(sizeof(char) * 5); // Organizzi l'array per contenere 5 stringhe
for (i = 0; i < 5; i++)
array_punts[i] = (char *)malloc(sizeof(char) * 5); // Istanzi la lunghezza di ognuna delle 5 stringhe
Cosi ottieni un array che può contenere 5 stringhe, ognuna di lunghezza 4 (5 - carattere terminatore '\0')