Problema em arquivo C

1. Problema em arquivo C

joao das couve
nubaodoc

(usa Ubuntu)

Enviado em 07/06/2015 - 18:16h

Boa noite, pessoal.
Estava elaborando um programinha basico em C, que usa switches aninhados, para poder fazer cadastro, consulta de dados em arquivo binario.
Bem , o meu problema é que o programa consegue cadastrar todos os dados corretamente(o menu de cadastro nao apresenta nada de errado ao meu ver), mas na hora de consultar, todas vez que tento consultar alguma coisa, seja opcao 1 ou 2, aparece o seguinte: pressione qualquer tecla para continuar....O interessante é que se eu tento consultar antes de fazer o cadastro, o programa flui normalmente. To tentando achar a solução pra esse bug, nao consigo, por favor galera, me da um help ai

Segue o codigo em c:
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<fstream>
#include<string.h>
using namespace std;
int main(){
FILE* arq;
int opcao, opcao2, opcao3;
long long codigoproduto, codigofunc, novocodigoproduto, novocodigofunc;
float preco;
char continuar;
char nome[40];
inicio:
do{
system("cls");
printf("\n\n\t\t\t\tMENU PRINCIPAL. ");
printf("\n\n\t\t\t\t1-CADASTRO.\n ");
printf("\t\t\t\t2-CONSULTA.\n");
printf("\t\t\t\t3-SAIR.");
printf("\n\n\t\t\t\tDIGITE UMA OPCAO: ");
setbuf(stdin, NULL);
scanf("%d", &opcao);
switch(opcao){
case 1:
system("cls");
printf("\n\n\t\t\t\tMENU DE CADASTRO.\n");
printf("\n\n\t\t\t\t1-CADASTRO DE PRODUTOS.\n");
printf("\t\t\t\t2-CADASTRO DE FUNCIONARIOS.\n ");
printf("\t\t\t\t3-CADASTRO DE PRODUTOS E FUNCIONARIOS.\n ");
printf("\t\t\t\t4-VOLTAR.\n");
printf("\n\n\t\t\t\tDIGITE UMA OPCAO: ");
setbuf(stdin,NULL);
scanf("%d", &opcao2);
switch(opcao2){
case 1:
while(continuar!='n'){
arq=fopen("empresinha.dat","ab");
if(arq==NULL){
printf("\nNAO FOI POSSIVEL ABRIR O ARQUIVO.\n");
system("PAUSE");
goto inicio;
}
system("cls");
printf("\nInsira o codigo do produto.\n");
setbuf(stdin, NULL);
scanf("%d",&codigoproduto);
fwrite("%f",sizeof(5),5,arq);
printf("\nInsira o preco do produto.\n");
setbuf(stdin, NULL);
scanf("%f",&preco);
fwrite("%f",sizeof(10),10,arq);
//fprintf(arq,"%f",preco);
printf("Deseja continuar?...(s/n)\n");
setbuf(stdin, NULL);
scanf("%c", &continuar);
}
fclose(arq);
system("PAUSE");
break;
case 2:
system("cls");
while(continuar!='n'){
arq=fopen("empresinha.dat","ab");
if(arq==NULL){
printf("\nNAO FOI POSSIVEL ABRIR O ARQUIVO.\n");
system("PAUSE");
goto inicio;
}
system("cls");
printf("\nInsira o codigo do funcionario:\n ");
setbuf(stdin,NULL);
scanf("%f",&codigofunc);
fwrite("%d",sizeof(5),5,arq);
printf("\nInsira o nome do funcionario:\n ");
setbuf(stdin, NULL);
gets(nome);
fwrite("%s",sizeof(40),40,arq);
printf("\nDeseja continuar?...(s/n)\n");
setbuf(stdin, NULL);
scanf("%c", &continuar);
}
fclose(arq);
system("PAUSE");
break;
case 3:
system("cls");
while(continuar!='n'){
arq=fopen("empresinha.dat","ab");
if(arq==NULL){
printf("\nNAO FOI POSSIVEL ABRIR O ARQUIVO.\n");
system("PAUSE");
goto inicio;
}
system("cls");
printf("\nInsira o codigo do produto:\n ");
setbuf(stdin, NULL);
scanf("%f",&codigoproduto);
fwrite("%f",sizeof(5),5,arq);
printf("\nInsira o preco do produto:\n ");
setbuf(stdin,NULL);
scanf("%f",&preco);
fwrite("%f",sizeof(10),10,arq);
printf("\nInsira o codigo do funcionario:\n ");
setbuf(stdin,NULL);
scanf("%f",&codigoproduto);
fwrite("%f",sizeof(5),5,arq);
printf("Insira o nome do funcionario: ");
setbuf(stdin,NULL);
gets(nome);
fwrite("%s",sizeof(40),40,arq);
printf("Deseja cntinuar:...(s/n)");
setbuf(stdin, NULL);
scanf("%c",&continuar);
}
fclose(arq);
system("PAUSE");
break;
case 4:
system("cls");
goto inicio;
break;
default:
system("cls");
printf("\nOperacao invalida.");
goto inicio;
break;
}
break;
case 2:
inicioconsulta:
system("cls");
printf("\n\n\t\t\t\tMENU DE CONSULTA.\n");
printf("\n\n\t\t\t\t1-CONSULTA DE FUNCIONARIO.\n");
printf("\t\t\t\t2-CONSULTA DE PRODUTO.\n");
printf("\t\t\t\t3-VOLTAR PARA O MENU ANTERIOR.\n");
printf("\n\n\t\t\t\tDIGITE UMA OPCAO.\n");
scanf("%d",&opcao3);
switch(opcao3){
case 1:
system("cls");
while(continuar!='n'){
arq=fopen("empresinha.dat","rb");
if(arq==NULL){
printf("\nNAO FOI POSSIVEL ABRIR O ARQUIVO.\n");
system("PAUSE");
goto inicio;
}
printf("Insira o codigo do funcionario:\n ");
setbuf(stdin, NULL);
scanf("%f",&novocodigofunc);
if(novocodigofunc=codigofunc){
printf("%f",novocodigofunc);
fread("%s",sizeof(40),40,arq);
printf("%s",nome);
}else{
printf("\nNAO ENCONTRADO. TENTE NOVAMENTE.\n");
system("PAUSE");
goto inicioconsulta;
}
printf("\nDeseja consultar novamente?...(s/n)\n");
setbuf(stdin, NULL);
scanf("%c",&continuar);
}
fclose(arq);
system("PAUSE");
break;
case 2:
system("cls");
while(continuar!='n'){
arq=fopen("empresinha.dat","rb");
if(arq==NULL){
printf("\nNAO FOI POSSIVEL ABRIR O ARQUIVO.\n");
goto inicio;
}
system("cls");
printf("\nInsira o codigo do produto:\n ");
setbuf(stdin, NULL);
scanf("%f",&novocodigoproduto);
if(novocodigoproduto==codigoproduto){
printf("%f", novocodigoproduto);
fread("%f",sizeof(10),10,arq);
printf("%F", preco);
}else{
printf("\nNAO FOI ENCONTRADO. TENTE NOVAMENTE.\n");
system("PAUSE");
goto inicioconsulta;
}
printf("Deseja consultar novamente?...(s/n)");
setbuf(stdin, NULL);
scanf("%d", &continuar);
}
system("PAUSE")
break;
case 3:
system("cls");
goto inicio;
break;
default:
system("cls");
printf("\nOperacao incorreta. Tente novamente.");
system("PAUSE");
break;
}
break;
case 3:
system("cls");
exit(1);
break;
default:
system("cls");
printf("\nOperacao incorreta. Tente novamente.");
system("PAUSE");
break;
}
}while(opcao!=3);
system("PAUSE");
return EXIT_SUCCESS;
}



  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts