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
-
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.
-
posta o codigo ai...
-
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
-
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:
#include <stdio.h>
main()
{
double y;
printf("nº:");
scanf("%lf",&y);
printf("%lf\n",y);
}
Execuçao:
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!!!
-
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. ;)