Hola,
Existe algo mas a tomar en cuenta en este caso, los retornos de carro y nueva línea, la función scanf no los extrae del buffer.
Como este otro caso.
Código:
void limpiarBuffer(){
char c[255];
int a = getchar();
if (a !=10) scanf("%s",c);
}
El 10 en la tabla ASCII significa 'nueva línea'. Que no lo puedas ver, no significa que no esté allí y que no lo tengas que extraer del buffer.
Código:
printf("Ingresar mas datos?: ");
scanf("%c",&r);
getchar();
Saludos,