Boa tarde pessoal. Segue o código com o problema. Quando o else if é satisfeito, além do else executar também, ele executa primeiro, ou seja, antes do else if.
PS: é linguagem C
if(tecla_code == 27){
printf("\n\n Executou 'if' ");
retorna_inicio = true;
sair = true;
}
else if(tecla_code == 59){
printf("\n\n Executou ''else if' ");
retorna_inicio = true;
sair = true;
}
else{
printf("\n\n Executou 'else' ");
}
PS: Como colocar o código aqui sem interferir no texto?
Você provavelmente está sofrendo de algum outro problema no seu código, como por exemplo buffer de teclado sujo, ou talvez você não percebeu que o seu código está dentro de um loop de alguma biblioteca externa.
Você está usando algo como ncurses ou similar? Algumas destas libs costumam ter um loop / lifecycle implícito que deve ser levado em conta ao escrever código.
Tome cuidado, pois que eu saiba fflush é só definido para stdout em sistemas UNIX, fflush(stdin) não é definido em sistemas UNIX.
Se não for isso, tem alguns outros possíveis gotchas que consigo imaginar, mas você tem mais chance de resolver rápido esse tipo de problema colocando um exemplo completo (funcional sozinho)
Tá, explica isso melhor pra mim. Estou desenvolvendo um pequeno projeto no windows, para depois testar o código também no linux. É só para treinar mesmo, após concluir o curso de C.
Explicar o que exatamente, o fato de fflush(stdin) não ser definido em sistemas UNIX? Bom, porque o Linux e outros sistemas UNIX seguem a especificação da linguagem mais fielmente.
Uma linguagem de programação no fundo é só uma especificação, você pode pensar no C meio que como uma especificação ABNT. No caso, nas especificações da linguagem, esse comportamento para fflush não foi concebido.
Cada sistema realiza a sua própria implementação da linguagem, por exemplo, GCC + glibc é o mais comum no linux. No caso do Windows eles adicionaram por conta própria esse comportamento como um extra.
A prática recomendada é sempre se limitar ao padrão da linguagem se você está almejando compatibilidade ampla.