Ir para conteúdo
Fórum Script Brasil
  • 0

Erro Ao Carregar Arquivo Binario Para Lista Encadeada


SubDark

Pergunta

Boa Noite Pessoal...

Venho recorrer a ajuda de voces pois estou tentando resolver esse problema e não sei exatamente o que ocorre.

E o seguinte, estou criando um programa que ao iniciar ele verifica se tem um arquivo, caso não haja ele passa direto, crio minha lista e ao final ele salva a lista num arquivo binario, ate ai tudo bem, mais ao abrir novamente o programa ele da erro e fecha antes mesmo de mecher nele, O que eu acredito ser na hora da leitura do arquivo esse tal erro. O programa esta em C.

int main() {
	
	
	FILE *file;
	
	//Criar Primeiro elemento da lista (Cabeça)
    tProd *inicio = (tProd*) malloc(sizeof(tProd));
    inicio->cod = 0;
    inicio->prox = NULL;
	
	//abre o arquivo para leitura em modo binário 
	file = fopen("Produtos", "rb"); 
	
	
	if (file != NULL){
		
		//Ponteiro de armazenamento temporario
		tProd *temp2 = (tProd*) malloc(sizeof(tProd));
		temp2 = inicio->prox;
		
		
		//Enquanto nao chegar fim de arquivo
		//Copia de 1 em 1 encadeando
		while( feof(file) == 0 ) {
			
			//Ponteiro de armazenamento novo
			tProd *temp1 = (tProd*) malloc(sizeof(tProd));
			temp1->prox = NULL;
			
			//Le a estrutura e armazena no temp1
			fread(&temp1, sizeof(tProd), 1, file);
		
		
		
			//Procura o ultimo elemento para adicionar o proximo
			if(inicio->prox == NULL){
			
				inicio->prox = temp1;
				//inicio->cod = temp1->cod + 1
			
			} else {
			
				while (temp2->prox != NULL){
					temp2 = temp2->prox;
				}
			
				temp2->prox = temp1;
				//inicio->cod = temp1->cod + 1
			}
		
				
			
		}
		
		
		
	} else {
		printf("\n-- O Arquivo Nao foi Aberto ou Nao Existe,\n-- Apos Cadastrar Todos Produtos Sera Salvo Um Novo Arquivo\n\n");
	}
	
	fclose(file);
	

e aqui esta a função que salva e struct que estou utilizando

typedef struct pProd {
    
    int cod;        //Codigo do produto
    char nome[30];  //Nome
    float preco;	//Preço do produto
    int quanti;		//Quantidade
    struct pProd *prox; //Ponteiro para o proximo elemento
    
} tProd;



void salvar(FILE *file, int num, tProd *inicio){
	int i;
	tProd *temp = inicio->prox;
	
	while(temp != NULL){
		
		fwrite(&temp, sizeof(tProd), 1, file);
		temp = temp->prox;
		
	}
	
	
}

Espero que voces possam me salvar.

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...