Jump to content
Gurzi

dica simples e util

Recommended Posts

Gurzi

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.

Share this post


Link to post
Share on other sites
deathseeker25

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

Share this post


Link to post
Share on other sites
redhat

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

Share this post


Link to post
Share on other sites
sandro_G

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||

Share this post


Link to post
Share on other sites
Rui Carlos

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.

Share this post


Link to post
Share on other sites
Black Tiger III

Podem ser smpr um char

buffer=getchar();

isto e o k costumo usar e funciona bem :thumbsup: , tem o defeito de s declarar mais uma variavel


Órale MI RAZA, MY BLOOD HOLMES BELONGS TO ME ÉSE...

EENNNGGGGEEEENNNNNNNHHHHAAAARRRRRIIIIIIIIIIAAAAAAAINFORMATICASISTEMAS....

Share this post


Link to post
Share on other sites
Guest tsenart

scanf("%*[^\n]"); scanf("%*c");

Faz exactamente isso. Descarta os caracteres do buffer do teclado.

Share this post


Link to post
Share on other sites

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.