Boa noite!!!
Na atividade eu preciso chamar em específico para listar todos os livros, revistas e caixas e não consigo fazer essa função. Quando chamo lista todas as obras aparecem junto 😐
Se alguém puder me dar uma ajudinha, eu ficarei super agradecida!!!
#include<stdio.h>
#include<stdlib.h>
#include<locale.h>
#include<string.h>
#define MAX 100
FILE * arq;
char url[50] = "arquivo.txt";
char * banco[200];
typedef struct{
int caixa, tipo;
int ano, edicao;
int quant;
char titulo[100];
char autor[100];
char editora[100];
char isbn[100];
}obras;
obras p1[200];
int ler_arquivo()
{
int i = 0;
char leitura[200];
arq = fopen(url, "r");
if(arq == NULL){
printf("ERRO na leitura do arquivo!");
}else{
while(fgets(leitura, 3000, arq) != NULL && (i<3000)){
banco = malloc(sizeof(char) * 3000); //variavel = malloc(tamanho da string que queremos em cada posição); strcpy(banco, leitura); i=i+1; } fclose(arq); } return i; }
preencher_obras(){ //alimentar os vetores de struct! ler_arquivo(); int j; printf("\nInforme o tipo da obra: [1] - livro [2] - revista: "); scanf("%d", &p1[j].tipo); fflush(stdin); printf("\nInforme o titulo: "); gets(p1[j].titulo); printf("\nInforme o autor: "); gets(p1[j].autor); printf("\nInforme a editora: "); gets(p1[j].editora); printf("\nInforme a edicao: "); scanf("%d", p1[j].edicao); fflush(stdin); printf("\nInforme o ISBN: "); gets(p1[j].isbn); printf("\nInforme o ano: "); scanf("%d", p1[j].ano); fflush(stdin); printf("\nInforme a quantidade de obras: "); scanf("%d", p1[j].quant); fflush(stdin); }
listar_obras(){ int k = ler_arquivo(); int i = 0; for(i = 0; i<k; i++){ printf("%s", banco); } system("pause"); } listarObrasPorCaixa(){ int numCaixa; int tipo; int i; char*opcaoObra; while(numCaixa == 1 || numCaixa == 2 || tipo == 1){ printf("%s", banco); } system("pause"); }
menu (){ obras obra[MAX]; int op; char resp; do{ system("cls"); printf("\n1 - Cadastrar obras"); printf("\n2 - Listar todas as revistas"); printf("\n3 - Listar todos os livros"); printf("\n4 - Listar obras por caixa"); printf("\n0 - Sair"); printf("\n\nEscolha uma opcao: "); fflush(stdin); scanf("%d", &op); if(op == 1){ preencher_obras(); }else if(op == 2){ listar_obras(); }else if(op == 3){ listar_obras(); }else if(op == 4){ listarObrasPorCaixa(); system("pause"); }else if((op != 1) && (op != 2) && (op != 3) && (op != 4) && (op != 0)){ printf("Opcao invalida"); system("pause"); }else if(op == 0){ printf("\n\nSaindo do sistema!!\n\n"); system("pause"); } }while(op!=0); } int main(){ menu(); setlocale(LC_ALL, "Portuguese"); }