Enviado em 12/01/2017 - 11:12h
Ola pessoal, estou com um problema no código que simula uma biblioteca em .bin, especificamente na opção 6 onde eu tenho que editar algo que ja foi cadastrado no arquivo Binario ja tentei algumas coisas e não funcionou.#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char livro[50];
char prateleira[50];
float preco;
}biblioteca;
int main(){
int opc,a,b,c,d,ret=1;
char resp='s';
char busca[50];
biblioteca x;
float busc;
FILE *fp;
if(fp != NULL){
//while(resp == 's' || resp == 'S'){
do {
system("cls");
printf("==========MENU==========\n");
printf("1)Cadastrar.\n");
printf("2)Visualizar Biblioteca.\n");
printf("3)Buscar pelo Livro.\n");
printf("4)Buscar pela Prateleira.\n");
printf("5)Buscar pelo Preco.\n");
printf("6) Mudar preco do Livro");
printf("Escolha uma opcao: ");
scanf("%i",&opc);
if(opc==1){
printf("Livro: ");
fflush(stdin);
gets(x.livro);
printf("Prateleira (A- B - C): ");
fflush(stdin);
gets(x.prateleira);
printf("Preco do Livro: ");
fflush(stdin);
scanf("%f",&x.preco);
fp = fopen("atv.bin","a+");
fwrite(&x,sizeof(biblioteca),1,fp);
fclose(fp);
printf("\nDesejas continuar (s) ou (n)? ");
fflush(stdin);
scanf("%c",&resp);
}
else if(opc==2){
fp = fopen("atv.bin","a+");
if(fp != NULL){
while(ret==1){
ret = fread(&x,sizeof(biblioteca),1,fp);
if(ret==1){
printf(" Livro: %s\n Prateleira: %s\n Preco: R$%.2f\n\n=========================\n\n",x.livro,x.prateleira,x.preco);
}
}
fclose(fp);
fflush(stdin);
getchar();
}
}
else if(opc==3){
fp = fopen("atv.bin","a+");
printf("Digite o Livro: ");
fflush(stdin);
gets(busca);
while(ret==1){
ret = fread(&x,sizeof(biblioteca),1,fp);
if(ret==1){
if(ret == 1){
if(strcmp(busca,x.livro)==0){
printf("\n Prateleira: %s\n Preco: %.1f\n\n=========================\n\n",x.prateleira,x.preco);
}
}
}
}
fclose(fp);
fflush(stdin);
getchar();
}
else if(opc==4){
printf("Digite a Prateleira(A - B - C): ");
fflush(stdin);
gets(busca);
fp = fopen("atv.bin","a+");
while(ret==1){
ret = fread(&x,sizeof(biblioteca),1,fp);
if(ret==1){
if(ret == 1){
if(strcmp(busca,x.prateleira)==0){
printf("\n Livro: %s\n Preco: %.1f\n\n=========================\n\n",x.livro,x.preco);
}
}
}
}
fclose(fp);
fflush(stdin);
getchar();
}
else if(opc==5){
printf("Digite o Preco: ");
fflush(stdin);
scanf("%f",&busc);
fp = fopen("atv.bin","a+");
while(ret==1){
ret = fread(&x,sizeof(biblioteca),1,fp);
if(ret==1){
if(ret == 1){
if(busc==x.preco){
printf("\n Livro: %s\n Prateleira: %s\n\n\n=========================\n\n",x.livro,x.prateleira);
}
}
}
}
fclose(fp);
fflush(stdin);
getchar(); }
else if(opc==6 ) {
}
}while (opc);
}
return 0;
}