ho dato un'occhiata al codice, e bhè come idea mi è venuta in mente di poter usare l'operazione di mod % ( resto della divisione ) per non andare fuori dai limiti della matrice! inoltre secondo me è superfluo passare tutto il vettore B alla funzione copia! io ho provato a fare una soluzione così, vedi un pò se ti potrebbe essere utile:
codice:
#include<stdio.h>
int colmax;
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)++;
}
void controlla(char A[][colmax],char B[],int M,int N,int L){
int i,colonna,riga;
int r=0, c=0;
//Cerca le ennuple maiuscoli
for(i=0;i<L;i++){
if(B[i]>='A' && B[i]<='Z'){
copia(A,B[i],&r,&c);
}
}
//Cerca le ennuple minuscoli
for(i=0;i<L;i++){
if(B[i]>='a' && B[i]<='z'){
copia(A,B[i],&r,&c);
}
}
//Stampa matrice A
for(riga=0;riga<M;riga++){
for(colonna=0;colonna<N;colonna++){
printf("%c",A[riga][colonna]);
}
printf("\n");
}
}
int main(){
int M=5,N=3,L=M*N;
char B[]="casMARSONpalESA";
char A[M][N];
printf ("%s\n", B);
colmax=N;
controlla(A,B,M,N,L);
printf("\n\n");
system("pause");
return 0;
}