estou fazendo esse programa de cadastro de produtos e não consigo resolver o problema do scanf quando vai ler o a variavel do tipo float fecha o programa.
Por favor se alguém tiver alguma dica eu fico muito grato. Obrigado
o cod é esse:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<dos.h>
struct tabela{
int cod,i;
char nome[20],fornec[40];
float prec;//(essa varial que esta dando o problema)
}produtos[50];
inclusao();
consulta();
listagem();
menu();
int gravai=0;//variavel universal que esta na funۂO inclusao
void main(){
menu();
} //main
inclusao(){
int i, contlin;
char voltamenu;
for(i=gravai,contlin=1;i<50; i++,contlin++){
if(contlin==4){
contlin=1;
clrscr();
gotoxy(30,2);
printf("_InclusÆo_\n");
}
printf("\nCodigo do produto : %.3i\n ",i+1);
printf("Nome : ");
fflush(stdin);
scanf("%s",&produtos.nome);
printf("Fornecedor : ");
fflush(stdin);
scanf("%s",&produtos.fornec);
printf("Pre‡o de venda : ");
fflush(stdin);
scanf("%f",&produtos.prec);//(a leitura é aqui neste ponto o programa fecha)
printf("%s",produtos.fornec);
printf("Deseja voltar para o menu ?S/N : ");
fflush(stdin);
scanf("%c",&voltamenu);
voltamenu=toupper(voltamenu);
if((voltamenu=='S')||(gravai==49)){
gravai=i+1; //quando volta no menu nÆo perde o cod do proximo
menu(); }
}//for
}//fecha inclusÆo
menu(){
int l,c;
char opc=0;
do{
clrscr();
gotoxy(30,2);
printf("Cadastro de produtos");
for(c=28;c<51;c++){
gotoxy(c,7);
printf("Í");
gotoxy(c,12);
printf("Í");
gotoxy(c,3);
printf("Í");}
gotoxy(27,7);
printf("É");
gotoxy(50,7);
printf("»");
gotoxy(27,12);
printf("È");
gotoxy(50,12);
printf("¼");
for(l=8;l<12;l++){
gotoxy(27,l);
printf("º");
gotoxy(50,l);
printf("º"); }
gotoxy(30,6);
printf("Op‡äes :");
gotoxy(30,8);
if(gravai<50) //quando for o cadastro de n§50 desabilita a inclusÆo
Pergunta
Guest Fioravante
estou fazendo esse programa de cadastro de produtos e não consigo resolver o problema do scanf quando vai ler o a variavel do tipo float fecha o programa.
Por favor se alguém tiver alguma dica eu fico muito grato. Obrigado
o cod é esse:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<dos.h>
struct tabela{
int cod,i;
char nome[20],fornec[40];
float prec;//(essa varial que esta dando o problema)
}produtos[50];
inclusao();
consulta();
listagem();
menu();
int gravai=0;//variavel universal que esta na funۂO inclusao
void main(){
menu();
} //main
inclusao(){
int i, contlin;
char voltamenu;
for(i=gravai,contlin=1;i<50; i++,contlin++){
if(contlin==4){
contlin=1;
clrscr();
gotoxy(30,2);
printf("_InclusÆo_\n");
}
printf("\nCodigo do produto : %.3i\n ",i+1);
printf("Nome : ");
fflush(stdin);
scanf("%s",&produtos.nome);
printf("Fornecedor : ");
fflush(stdin);
scanf("%s",&produtos.fornec);
printf("Pre‡o de venda : ");
fflush(stdin);
scanf("%f",&produtos.prec);//(a leitura é aqui neste ponto o programa fecha)
printf("%s",produtos.fornec);
printf("Deseja voltar para o menu ?S/N : ");
fflush(stdin);
scanf("%c",&voltamenu);
voltamenu=toupper(voltamenu);
if((voltamenu=='S')||(gravai==49)){
gravai=i+1; //quando volta no menu nÆo perde o cod do proximo
menu(); }
}//for
}//fecha inclusÆo
menu(){
int l,c;
char opc=0;
do{
clrscr();
gotoxy(30,2);
printf("Cadastro de produtos");
for(c=28;c<51;c++){
gotoxy(c,7);
printf("Í");
gotoxy(c,12);
printf("Í");
gotoxy(c,3);
printf("Í");}
gotoxy(27,7);
printf("É");
gotoxy(50,7);
printf("»");
gotoxy(27,12);
printf("È");
gotoxy(50,12);
printf("¼");
for(l=8;l<12;l++){
gotoxy(27,l);
printf("º");
gotoxy(50,l);
printf("º"); }
gotoxy(30,6);
printf("Op‡äes :");
gotoxy(30,8);
if(gravai<50) //quando for o cadastro de n§50 desabilita a inclusÆo
printf("1. InclusÆo ");
gotoxy(30,9);
printf("2. Consulta ");
gotoxy(30,10);
printf("3. Listagem ");
gotoxy(30,11);
printf("4. Sair\n\n");
printf("\n\nDigite a sua op‡ao: ");
fflush(stdin);
scanf("%c",&opc);
if((opc!='1')&&(opc!='2')&&(opc!='3')&&(opc!='4')){ printf("\n\a\a Op‡Æo invalida !!"); delay(2000);}
}//do
while((opc!='1')&&(opc!='2')&&(opc!='3')&&(opc!='4') ) ;
switch (opc){
case'1':clrscr();
gotoxy(30,2);
if(gravai<50){
printf("_InclusÆo_\n");
inclusao();}
else{
gotoxy(10,10);
printf("Aten‡Æo:\a nÆo ‚ possivel gravar mais nenhum cadastro");
delay(2000);
menu();}
getch();//para teste de tela
break;
case'2':clrscr();
gotoxy(30,2);
printf("Consulta");
getch();//para teste de tela
break;
case'3': clrscr();
gotoxy(30,2);
printf("Listagem");
getch();//para teste
break;
case'4': abort();
}
}//fecha fun‡Æo menu
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.