Jump to content

Recommended Posts

Posted

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")?

Posted

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

Posted

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.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.