Originariamente inviato da gennahouse
Credo che l'errore sia aver usato una parola riservata cioe array giusto?
array non è una parola riservata, e anche se lo fosse per_array non lo sarebbe.
Il punto è che stai commettendo un doppio errore: in primo luogo, le dimensioni degli array devono essere note al momento della compilazione*, per cui non puoi creare array allocati sullo stack di dimensioni specificate tramite una variabile; inoltre, anche se si potesse*, dato che la variabile per_array non è inizializzata (e quindi ha un valore più o meno casuale**), otterresti array di dimensioni assurde.
La soluzione è fare sì che per_array sia una #define (ad esempio, #define PER_ARRAY 50); in alternativa (ma non ricordo se è valida in C o solo in C++) è definire per_array come costante, possibilmente di tipo size_t (il tipo adeguato per specificare le dimensioni di oggetti), la dichiarazione sarebbe qualcosa del tipo
codice:
const size_t per_array=50;
* in realtà in C89 con estensioni GNU e in C99 si può fare tramite i VLA, ma sono da evitare.
** in realtà non è proprio casuale, è il valore che per caso si trova sullo stack in quel punto, ma di fatto non è prevedibile. In generale non bisogna leggere da variabili non inizializzate.