Wow grandissimo! Non so perché non mi è mai venuto quest'idea di utilizzare (%)! Beh comunque è da poco tempo che studio programmazione quindi penso che dovrei migliorare ancora tanto. Grazie mille per la tua risposta e i suggerimenti.

codice:
void copia(char A[][colmax],char car,int* i, int* j) 
{ 
    if ( (*j)%colmax == 0 && (*j)!=0 ) { 
         (*i)++;   
         (*j)=0;
    }
    A[*i][(*j)%colmax] = car;
    (*j)++;
       
}

L'unica cosa che vorrei capire è perché hai usato nella funzione copia per una seconda volta A[*i][(*j)%colmax]. A quanto pare, visto che questo l'abbiamo già controllato precedentemente nell'if, si può direttamente scrivere A[*i][*j]=car, vero?