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

Gurzi

dica simples e util

10 mensagens neste tópico

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim o fflush(stdin); eh bem mais viavel que o espaço... acreditem que eh ! :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ya, dica simples mas que pode realmente safar o people de muitas dores de cabeça!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

um dica muito importante para programar em C, e que nos fazem perder muito tempo e paciência  :P

Acho ó que deves melhorar o título do tópico, ser mais expecifico.

bom trabalho

tofas

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

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

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