Gurzi Posted September 6, 2005 at 08:52 PM Report #4643 Posted September 6, 2005 at 08:52 PM estava a ler aqui um exercicio do Damas e achei curioso, para quem não tenha o Livro aqui fica uma boa dica. #include <stdio.h> main() { char ch1,ch2; printf("Introduza um Caracter : "); scanf("%c",&ch1); printf("Introduza outro caracter:"); scanf("%c",&ch2); printf("os caracteres introduzidos foram '%c' e '%c'\n",ch1,ch2); Imaginem que introduzem no primeiro caracter C mal carregam enter o c reconhece o newline(enter) como um %c e por isso vos vai aparecer que os caracteres introduzidos foram c e ' ' . DICA: O espaço em branco dentro de um scanf , indica a esta funçao para ler e ignorar todos os espaços em brancos,new lines e tabs que encontrar ou seja : #include <stdio.h> main() { char ch1,ch2; printf("Introduza um Caracter : "); scanf("%c",&ch1); printf("Introduza outro caracter:"); scanf(" %c",&ch2); printf("os caracteres introduzidos foram '%c' e '%c'\n",ch1,ch2); um ' ' (space) antes do %c do segundo scanf faz ignorar o new line(enter) dado no buffer do teclado ignora o enter.
deathseeker25 Posted September 6, 2005 at 09:12 PM Report #4645 Posted September 6, 2005 at 09:12 PM Estive a rever exactamente isso agora no livro do Damas. Na realidade é uma dica que poupa muitos possíveis problemas e dores de cabeça para iniciantes. Cumps
MaXiMuS Posted September 7, 2005 at 08:23 AM Report #4657 Posted September 7, 2005 at 08:23 AM sim.. ou então fflush(stdin); ;)
redhat Posted September 9, 2005 at 05:34 PM Report #4791 Posted September 9, 2005 at 05:34 PM sim o fflush(stdin); eh bem mais viavel que o espaço... acreditem que eh ! 🙂 Software is like sex... it's better when it's free in the old days P@P "C" && "Linux" Moderator
sandro_G Posted January 7, 2007 at 10:18 AM Report #74955 Posted January 7, 2007 at 10:18 AM Ya, dica simples mas que pode realmente safar o people de muitas dores de cabeça! ||I'm the devil25, I'm G and I'm sandro_G||
Rui Carlos Posted January 7, 2007 at 10:43 AM Report #74956 Posted January 7, 2007 at 10:43 AM sim.. ou então fflush(stdin); ;) o fflush(stdin); nem sempre funciona (aliás, comigo nunca funcionou), visto que no ANSI C, é uma função para ser aplicada a buffers de escrita, sendo indefinido o efeito em buffers de leitura. Rui Carlos Gonçalves
saramgsilva Posted February 7, 2007 at 02:28 AM Report #80936 Posted February 7, 2007 at 02:28 AM Boas, um dica muito importante para programar em C, e que nos fazem perder muito tempo e paciência 😛 Acho ó que deves melhorar o título do tópico, ser mais expecifico. bom trabalho tofas www.saramgsilva.com As minhas apps no WP7 Marketplace Youtube : Galinho - Windows Phone 7.5
dark_splinter Posted February 11, 2007 at 07:26 PM Report #81993 Posted February 11, 2007 at 07:26 PM rewind(stdin) também nos resolve o problema 😉
Black Tiger III Posted June 1, 2007 at 06:38 PM Report #104361 Posted June 1, 2007 at 06:38 PM Podem ser smpr um char buffer=getchar(); isto e o k costumo usar e funciona bem 👍 , tem o defeito de s declarar mais uma variavel Órale MI RAZA, MY BLOOD HOLMES BELONGS TO ME ÉSE... EENNNGGGGEEEENNNNNNNHHHHAAAARRRRRIIIIIIIIIIAAAAAAAINFORMATICASISTEMAS....
Guest tsenart Posted June 15, 2007 at 11:52 AM Report #107241 Posted June 15, 2007 at 11:52 AM scanf("%*[^\n]"); scanf("%*c"); Faz exactamente isso. Descarta os caracteres do buffer do teclado.
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