Jump to content
Fórum Script Brasil
  • 0

Não consigo chamar uma função em específico!!!


Question

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");
}

Edited by ayllaass
Link to post
Share on other sites

1 answer to this question

Recommended Posts

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148887
    • Total Posts
      644948
×
×
  • Create New...