Autor Tópico: A função scanf não aceita double![RESOLVIDO]  (Lida 30435 vezes)

Offline ana182

  • Usuário Ubuntu
  • *
  • Mensagens: 30
    • Ver perfil
A função scanf não aceita double![RESOLVIDO]
« Online: 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.
« Última modificação: 27 de Maio de 2008, 17:54 por ana182 »

Offline joas

  • Usuário Ubuntu
  • *
  • Mensagens: 27
    • Ver perfil
Re: A função scanf não aceita double!
« Resposta #1 Online: 27 de Maio de 2008, 02:52 »
posta o codigo ai...

Offline ana182

  • Usuário Ubuntu
  • *
  • Mensagens: 30
    • Ver perfil
Re: A função scanf não aceita double!
« Resposta #2 Online: 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

Offline IgorM0L

  • Usuário Ubuntu
  • *
  • Mensagens: 487
  • Lokos está morto. Vamos ressucitá-lo?
    • Ver perfil
    • Yrado.net
Re: A função scanf não aceita double!
« Resposta #3 Online: 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!!!
« Última modificação: 27 de Maio de 2008, 14:59 por IgorM0L »

Offline ana182

  • Usuário Ubuntu
  • *
  • Mensagens: 30
    • Ver perfil
Re: A função scanf não aceita double!
« Resposta #4 Online: 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. ;)