Se prima metto
printf("numero: ");
scanf("%d", &side);
succede che nel programma compilato viene ignorato
printf("carattere: ");
scanf("%c", &car);
e la struttura for invece di restituire ciò che dovrebbe (un quadrato di lato "side" stampato con il carattere "car") stampa una serie di spazi.
Mi sembra molto strano perchè non mi era mai capitato.
Se invece della specifica %c uso però %d (cambiando anche le dichiarazioni da char a int) il problema non compare.