jfred-silva Posted May 11, 2009 at 10:41 AM Report #262965 Posted May 11, 2009 at 10:41 AM 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")?
Rui Carlos Posted May 11, 2009 at 10:50 AM Report #262968 Posted May 11, 2009 at 10:50 AM Mete um espaço antes do %c do scanf. Isso devem ser problemas com o buffer. Quanto à outra questão, podes fazer system("clear"). Rui Carlos Gonçalves
jfred-silva Posted May 11, 2009 at 10:57 AM Author Report #262971 Posted May 11, 2009 at 10:57 AM 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
Rui Carlos Posted May 11, 2009 at 11:17 AM Report #262976 Posted May 11, 2009 at 11:17 AM 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. Rui Carlos Gonçalves
jfred-silva Posted May 11, 2009 at 11:38 AM Author Report #262981 Posted May 11, 2009 at 11:38 AM Ah ok, realmente meti o tal espaçamento e agora tudo funciona bem, era um erro que sempre me tinha atormentado.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now