• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

jfred-silva

Instrução repetida

5 mensagens neste tópico

Desde que utilizo Xcode que me tenho deparado com algo um pouco incomodo, se introduzir o seguinte código:

char op;
printf("Paragem:                    Dia corrente ()\n"
	   "Lugares disponíveis:        Passageiros transportados:\n" 
	   "                            Receita obtida:\n"  
	   "I – Iniciar Dia \n"
	   "P – Paragem \n"
	   "A – Apresentação de informação do dia\n" 
	   "E – Estatísticas \n"
	   "F – Fim \n");
do{
	printf("          Seleccione opcao:");
	scanf("%c", &op);
	op=toupper(op);
}while(op != 'I' && op!='P' && op!='A' && op!='E' && op!='F');

Sempre que introduzir um caracter invalido ele irá repetir duas vezes o "seleccione opcao"

Outra dúvida é o que substitui no mac o system("cls")?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mete um espaço antes do %c do scanf. Isso devem ser problemas com o buffer.

Quanto à outra questão, podes fazer system("clear").

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu também já pensei que pudesse ser um problema com o buffer, mas se meter fflush(stdin) ele continua com o mesmo problema. É que se utilizar este mesmo código noutros programas como o dev c++ ele funciona bem

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O fflush foi feito para limpar buffers abertos para escrita. Em buffers de leitura (como é o caso do stdin), o seu comportamento é indefinido (embora em alguns SOs, como é o caso do windows, até produza o efeito esperado).

Resumindo, a solução para este tipo de problema não é o fflush. No mac tens disponível a função fpurge, essa sim com a finalidade que precisas. No entanto, esta função não é standard, e não está disponível em todos os SOs.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ah ok, realmente meti o tal espaçamento e agora tudo funciona bem, era um erro que sempre me tinha atormentado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora