vorrei capire il caricamento di una matrice di tipo unsigned char
io mi sono comportato nel seguente modo....

#include <stdio.h>
#define righe 16
#define colonne 16

void carica_matrice (unsigned char (*)[colonne], int, int);

void main()
{
unsigned char MLG [righe][colonne];
int r, c;

printf ("Quante righe: ");
scanf ("%d", %r);

printf ("Quante colonne: ");
scanf ("%d", %c);

carica_matrice (MLG, r, c);
}

void carica_matrice (unsigned char (*mat)[colonne], int R, int C)
{
int i, j;

for (i=0; i<R; i++)
{
for (j=0; j<C; j++)
{
do
{
printf ("\nInserisci valore compreso nell'intervallo [0, 255], in posizione [%d][%d]: ", i, j);
scanf ("%c", &mat[i][j]);
}while (mat[i][j] >= 255 || mat[i][j] <= 0);
}
}
}

poi quando mando in esecuzione il programma, nel caso in cui dovessi inserire un valore maggiore di 255, il controllo del while non viene rispettato e quindi va avanti con l'inserimento dei valori.....