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!