Ir para conteúdo
Fórum Script Brasil

ThaisM

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Posts postados por ThaisM

  1. Olá!

    Será que alguém poderia me ajudar?

    Estou fazendo um programa no qual é necessário criar um arquivo para gravar as informações que já foram digitadas. Estou usando uma função para chamar o código que está criando os arquivos e guardando as informações...

    No entanto não estou conseguindo gravar as informações através da struct que criei. Quando eu abro o programa novamente, não consigo recuperar as informações.

    Acredito que esteja gravando somente o ponteiro e não as informações em si. Será que alguém teria alguma ideia pra me ajudar?

    Aqui vai o código.

    #include <stdlib.h>
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    #include <ctype.h>
    
    #define MAX1 1000
    
    
    //////////////////////////////STRUCT
    
    struct livro{
    char nomedolivro[17];
    int area;
    char autores[60];
    char editora[20];
    };
    
    
    /////////////////////////////////////////////////////////FUNCAO CADASTRAR LIVROS
    void cadastrarLivros(struct livro livros[MAX1], int *contlivros){
     int ii;
     int *pont;
    
    FILE *fptr;
    FILE *guarda1;
    
    
    ///////////////////LENDO QUAL POSIÇÃO (QUANTOS LIVROS JÁ CADASTRADOS)
    guarda1=fopen("guardaponteiro1.txt","r");
    int x=0;
    
    while(fscanf(guarda1, "%i",  &x) > 0)
    {
       fprintf(guarda1, "%i", x);
       printf("\n%i", x);
       printf("\nVALOR PONTEIRO");
    }
    
    
    
    ///////////////////ESCREVENDO INFORMAÇÕES
    if ((fptr = fopen("pessoas", "wb")) == NULL){
    printf("\nErro na abertura do arquivo");
    
    }else{
    contlivros=&x;
       do{
       printf("\nDigite o Nome do Livro: ");
       gets(livros[*contlivros].nomedolivro);
       
       }while(strlen(livros[*contlivros].nomedolivro)==0);
       fwrite(&livros, sizeof(livro), 1, fptr);
       
    *contlivros=*contlivros+1;
    fclose(fptr);
    }
    
    ///////////////////LENDO INFORMAÇÕES
    if ((fptr = fopen("pessoas", "rb")) == NULL)
        printf("\nErro na abertura do arquivo");
    else{
      while(fread(&livros, sizeof(livro), 1, fptr) == 1){
      for(ii = 0; ii <=*contlivros-1; ii++){
      printf("\nNome: %s\n",livros[ii].nomedolivro);
         }
        }
        fclose(fptr);
    }
    
    
    ///////////////////GUARDANDO PONTEIRO
    guarda1=fopen("guardaponteiro1.txt","w");
    if(guarda1==NULL){
    printf("\n erro");
    }else{
    pont=contlivros;
    fprintf(guarda1, "%i", *pont);
    //printf("\n%i", *pont);
    fclose(guarda1);
    }
    
    ///////////////////LENDO PONTEIRO
    if ((fptr = fopen("guardaponteiro1.txt", "r")) == NULL){
    printf("\nErro na abertura do arquivo");
    }else{
    while (!feof(guarda1)){
    fscanf(guarda1,"%i",&*pont);
    printf("\n%i",*pont);
    } 
    }
    fclose(guarda1);
    
    
    
    };////final funcao
    
    
    
    ////////////////////////////////////////////////
    main(){
    
    struct livro livros[MAX1];
    int opcao,contlivros=0;
    
    
    do{
       printf("\n\n");
       printf("\n Escolha sua opcao");
       printf("\n 1 - Cadastrar livros");
       printf("\n OPCAO: ");
       scanf("%d", &opcao);
       fflush(stdin);
       
       switch(opcao){
       
       case 1:{
       cadastrarLivros(livros, &contlivros);
      //criar documento adicionando livros
       break;
       }
       
                
       case 0:{
       break;
       }
                   
       default:{
       printf("\n \n =====OPCAO INVALIDA===== \n \n");
       break;
       }
       }
    }while (opcao!=0);
    
    }

    Obrigada!

×
×
  • Criar Novo...