Boa tarde,
Estou fazendo um trabalho da faculdade, usando arquivo, no qual o usuário realiza cadastros de livros e operações básicas como listar, alterar, excluir etc
No entanto, estou com dificuldades na função visualizar para fazer com que meu programa liste todos os livros cadastrados. Ele mostra apenas o ultimo.
Podem ter algumas coisas erradas no código em geral, eu meio que to fazendo e aprendendo ao mesmo tempo, se alguém conseguir dar uma dica ou mostrar como ficaria essa parte, agradeço.
Segue o código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
#define TAM 100
FILE *pArq;
typedef struct biblioteca {
char nome_livro[500], autor[500], livro_lido[500];
int pags, num_livro;
}cad;
cad lib[TAM];
void cadastrar();
void visualizar();
int main()
{
setlocale(LC_ALL, "Portuguese");
int i, opcao, cont;
i = opcao = cont = 0;
while (opcao != 6) {
printf("\n\n--------------"
" BEM-VINDO A SUA BIBLIOTECA "
"----------------\n");
printf("\n\n *Utilize os números para navegar no menu* \n");
printf("\n\n-------------------------\n");
printf("1. ADICIONAR UM LIVRO NOVO\n ");
printf("2. MOSTRAR LIVROS CADASTRADOS\n");
printf("6. SAIR");
printf("\n\nESCOLHA UMA DAS opções ACIMA: ");
scanf("%d", &opcao);
switch (opcao) {
case 1:
cadastrar();
system ("pause");
break;
case 2:
visualizar();
break;
case 6:
exit(0);
}
}
getchar();
return 0;
}
void abrir_arq(){
pArq = fopen("biblioteca.txt", "a");
if(pArq == NULL){
printf("Erro na abertura do arquivo!");
return 1;
}
return 0;
}
void cadastrar()
{
int i;
int cont;
abrir_arq("a");
for(i=0;i<1;i++)
{
getchar();
printf("INSIRA O NÚMERO DO LIVRO: ");
scanf("%d", &lib[i].num_livro);
printf("INSIRA O NOME DO LIVRO: ");
scanf("%s", &lib[i].nome_livro);
printf("INSIRA O NOME DO AUTOR: ");
scanf("%s", &lib[i].autor);
printf("INSIRA O NÚMERO DE PÁGINAS: ");
scanf("%d", &lib[i].pags);
printf("VOCÊ JÁ LEU ESSE LIVRO? (INSIRA NO FORMATO: LIDO/LEITURA PENDENTE) ");
scanf("%s", &lib[i].livro_lido);
fprintf(pArq,"%d ",lib[i].num_livro);
fprintf(pArq,"%s ",lib[i].nome_livro);
fprintf(pArq,"%s ",lib[i].autor);
fprintf(pArq," %d ",lib[i].pags);
fprintf(pArq," %s \n",lib[i].livro_lido);
}
fclose(pArq);
}
void visualizar()
{
pArq = fopen("biblioteca.txt", "r");
if(pArq == NULL){
printf("Erro na abertura do arquivo!");
return 1;
}
int i = 0;
for (i = 0; i < TAM; i++) {
if (lib[i].num_livro != 0){
printf("\t LIVRO NÚMERO = %d", lib[i].num_livro);
printf("\t NOME DO LIVRO = %s", lib[i].nome_livro);
printf("\t NOME DO AUTOR = %s", lib[i].autor);
printf("\t QUANTIDADE DE PAGINAS = %d", lib[i].pags);
printf("\t STATUS DE LEITURA = %s \n", lib[i].livro_lido);
}
}
printf("\n");
getchar();
fflush(stdin);
system("pause");
}