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;
}
}
Pergunta
SubDark
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.
e aqui esta a função que salva e struct que estou utilizando
Espero que voces possam me salvar.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.