Olá amigo.
Seu problema está no lixo do buffer. É bem fácil de arrumar, basta colocar a seguinte linha no final do loop while:
setbuf(stdin, NULL);
Porém, seu código tem alguns trechos que podem causar problemas mais tarde, então, decidi alterar algumas coisas - se você não se importar com isso....
#include <stdio.h>
#include <stdlib.h>
int main(){
char EntSai;
char Vaga[9];
int NumBox;
// Coloquei dentro de um loop infinito, pois, só sairá dele se for entrado 'B' ou fechado.
while(1){
printf("\n Escolha uma opcao!");
printf("\n Para entrada digite: E, Para saida digite :S, Para sair digite :B! ");
// A entrada da variável EntSai, foi colocada dentro do loop para evitar código desnecessário.
scanf("%c", &EntSai);
// Saindo do programa.
if(EntSai == 'B')
exit(0);
// Trecho de código para a entrada.
if (EntSai == 'E'){
printf("\n Digite o numero da vaga: ");
scanf("%d", &NumBox);
if(Vaga[NumBox] != 'O'){
Vaga[NumBox] = 'O';
printf("\n Operacao finalizada com sucesso! \n\n");
}else
printf("\n Vaga ocupada!! \n\n");
// Trecho de código da saida.
}else if (EntSai == 'S'){ // Coloquei uma verificação do EntSai, para evitar execução indevida.
printf("\n Digite o numero da vaga que esta saindo: ");
scanf("%d", &NumBox);
Vaga[NumBox] = 'S';
printf("\n Volte sempre!\n");
}
// A solução do seu problema:
setbuf(stdin, NULL);
}
}
Qualquer coisa, é só perguntar.