Non l'ho inteso come "quello che hai fatto è sbagliato", ma piuttosto come "avresti potuto farlo diversamente". Ma forse sono io che non capisco l'italiano.Infine, se le dimensioni di un array non sono note al momento della compilazione in genere è meglio usare l'allocazione dinamica piuttosto che dichiarare dei VLA (variable length array) come hai fatto tu.
In ogni caso sto provando con l'allocazione dinamica (sempre se è quello il problema), ma grazie mille per la tua puntualizzazione.