Novogle 0 Denunciar post Postado Novembro 12, 2015 Bom, antes de ler a variável 'saldo' da struct, o valor é = 0. Depois de eu mesmo ler o valor e inserir (por exemplo) 100, e imprimi-lo aparece o que eu creio que seja lixo: um número 4227284. Queria saber como fazer para não aparecer isso e sim o número que eu inserir no programa. struct contas { int numeroConta; char nome[50]; int cpf; int nDia; int nMes; int nAno; float saldo; }cliente[5]; //códigos ocultados void cadastro () { int i; for (i=1;i<=5;i++) { fflush(stdin); printf("Digite seu nome: \n"); fflush(stdin); gets(cliente[i].nome); printf("Ok %s, digite o numero da sua conta: \n", cliente[i].nome); scanf("%d", &cliente[i].numeroConta); printf("\nOk! %s .Digite seu CPF: \n",cliente[i].nome); scanf("%d", &cliente[i].cpf); printf("Ok! Seu CPF é %d ! Agora digite seu dia de nascimento (em numero): ", cliente[i].cpf); scanf("%d", &cliente[i].nDia); printf("Agora o seu mês de nascimento (em numero):\n "); scanf("%d", &cliente[i].nMes); printf("Agora o seu ano de nascimento (em numero):\n "); scanf("%d", &cliente[i].nAno); printf("Sua data de nascimento é %d/%d/%d. Agora digite o saldo da sua conta.\n" ,cliente[i].nDia,cliente[i].nMes,cliente[i].nAno); printf("Seu saldo eh %f", cliente[i].saldo); cliente[i].saldo = 0; //coloquei essa linha ao tentar consertar, o que não funcionou... scanf("%f", &cliente[i].saldo); printf("Ok, seu saldo eh de %d\n", &cliente[i].saldo); } } int main () { int x; printf("Digite 1 para cadastrar-se no banco\n 2 para transferencia entre contas\n 3 para saques\n 4 para depositos\n 5 para ver o saldo \n"); scanf("%d", &x); switch (x) { case 1 : cadastro(); return main(); break; case 2 : transferencia(); return main(); break; case 3 : saque(); return main(); break; case 4 :deposito(); return main(); break; case 5 : verSaldo(); return main(); break; default : printf("Operacao invalida"); break; main(); } } Compartilhar este post Link para o post Compartilhar em outros sites
Felipe-Petrópolis 11 Denunciar post Postado Novembro 12, 2015 Olá! Sou iniciante em C mas acho que posso lhe ajudar . . . O problema parece estar nesta linha: printf("Ok, seu saldo eh de %d\n", &cliente[i].saldo); Não é necessario o " & " no printf () e o codigo de formatação está errado o correto seria " %f " Alem disso tente ler este topico do forum que dá excelentes dicas sobre varios assuntos que podem lhe ser util, mas principalmente tente buscar informações sobre problemas relacionados ao uso das funções - gets() e fflush ( stdin ) http://forum.imasters.com.br/topic/336835-tutorial-systempause-e-fflushstdin/ Bom por hoa é só . . . Ubuntu 14.04 Gcc 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! ! Compartilhar este post Link para o post Compartilhar em outros sites
CiroboyBR 0 Denunciar post Postado Novembro 12, 2015 void cadastro () { int i; for (i=1; i<=5; i++) { fflush(stdin); printf("Digite seu nome: \n"); fflush(stdin); gets(cliente.nome); printf("Ok %s, digite o numero da sua conta: \n", cliente.nome); scanf("%d", &cliente.numeroConta); printf("\nOk! %s .Digite seu CPF: \n",cliente.nome); scanf("%d", &cliente.cpf); printf("Ok! Seu CPF é %d ! Agora digite seu dia de nascimento (em numero): ", cliente.cpf); scanf("%d", &cliente.nDia); printf("Agora o seu mês de nascimento (em numero):\n "); scanf("%d", &cliente.nMes); printf("Agora o seu ano de nascimento (em numero):\n "); scanf("%d", &cliente.nAno); printf("Sua data de nascimento é %d/%d/%d. Agora digite o saldo da sua conta.\n" ,cliente.nDia,cliente.nMes,cliente.nAno); scanf("%f", &cliente.saldo); printf("Ok, seu saldo eh de %.2f\n", cliente.saldo); } } Compartilhar este post Link para o post Compartilhar em outros sites
Novogle 0 Denunciar post Postado Novembro 12, 2015 Boa galera! Eu sabia que não precisava do & e creio que foi isso que me atrapalhou. Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Novembro 12, 2015 E não use fflush na entrada padrão, nem gets. Compartilhar este post Link para o post Compartilhar em outros sites