Fórum Ubuntu Linux - PT

Suporte Técnico => Programação e Scripts => Tópico iniciado por: ana182 em 27 de Maio de 2008, 02:37

Título: A função scanf não aceita double![RESOLVIDO]
Enviado por: ana182 em 27 de Maio de 2008, 02:37
Olá!
Como ponho a função scanf a aceitar doubles? Simplesmente não lê quer eu use %e, %f ou %g. Se testo o valor da variável que deveria receber o valor da scanf, esta retorna-me um valor absurdo. Julgo não haver problemas de sintaxe do código porque se substituir o double por float na inicialização da variável que recebe a scanf, tudo corre bem. O que fazer?

Ana Luísa

P.S. Trata-se de código C.
Título: Re: A função scanf não aceita double!
Enviado por: joas em 27 de Maio de 2008, 02:52
posta o codigo ai...
Título: Re: A função scanf não aceita double!
Enviado por: ana182 em 27 de Maio de 2008, 12:22
Tão simples quanto isto:

#include <stdio.h>

main()
{
  double y;
  printf("nº:");
  scanf("%f",&y);
  printf("%f\n",y);
}

Compilo e não dá erro. Quando introduzo, por exemplo, o nº 2 ele retorna-me 0. :S

Ana Luísa
Título: Re: A função scanf não aceita double!
Enviado por: IgorM0L em 27 de Maio de 2008, 14:56
  Seu erro eh extremamenet simples.
 
  Caso estivesse usando o tipo float, era somente voce fazer do modo que voce esta fazendo, usando %f.
  Acontece que o tipo double eh um tipo superior ao float, tendo para ele um tipo especial na chamada scanf ou mesmo printf. Use para ele o simbolo %lf;

 Eis o codigo correto:
Código: [Selecionar]
#include <stdio.h>

main()
{
  double y;
  printf("nº:");
  scanf("%lf",&y);
  printf("%lf\n",y);
}

  Execuçao:
Código: [Selecionar]
igormol@desktop:~/Desktop$ gcc -o test test.c
igormol@desktop:~/Desktop$ ./test
nº:4
4.000000

  PS: Ana Luísa, participe mais do forum, para dar um tom mais feminino, aqui so tem homem!!!
Título: Re: A função scanf não aceita double!
Enviado por: ana182 em 27 de Maio de 2008, 17:47
Olá!
Pois claro! Agora tudo funciona bem. Tenho um livro de programação um pouco antigo e eles não fazem muita referência aos doubles, por razões óbvias... e também sou novata em programação.
Obrigada!

Ana Luísa

P.S. Ok!, vou estar mais atenta ao forum. ;)