Problema com arquivos

1. Problema com arquivos

Perfil removido
removido

(usa Nenhuma)

Enviado em 10/11/2011 - 12:05h

Estamos fazendo um programa para cadastro de vôos, passagens e passageiros. Temos que salvar os dados em arquivos. Só que o programa tá dando segmentation fault nesse função.
Uma boa alma poderia dar uma olhada no código e olhar o que tá errado? Não temos certeza se o erro é nessa função mas temos quase certeza.

void novoRegistro(FILE *fPtr, int op)
{

int id;
printf("Digite o numero do id (1-100): ");
scanf("%d", &id);
if(op == 1)
{

fseek(fPtr, (id - 1) * sizeof(PASSAGEIROS), SEEK_SET);
fread(&cadastro_passageiros, sizeof(PASSAGEIROS), 1, fPtr);
if (cadastro_passageiros.id != 0)
printf("Passageiro #%d ja contem informacoes.\n", cadastro_passageiros.id);
else
{
printf("Digite o nome: ");
scanf("%s", &cadastro_passageiros.nome);
fflush(stdin);
printf("Digite o endereco: ");
scanf("%s", &cadastro_passageiros.endereco);
fflush(stdin);
printf("Digite a identidade: ");
scanf("%s", &cadastro_passageiros.identidade);
fflush(stdin);
printf("Digite o telefone: ");
scanf("%d", &cadastro_passageiros.telefone);
getchar();
printf("Digite o sexo: ");
scanf("%c", &cadastro_passageiros.sexo);
getchar(); // segmentation fault aparece depois de digitar o sexo
cadastro_passageiros.id = id;
fseek(fPtr, (id - 1) *sizeof(PASSAGEIROS), SEEK_SET);
fwrite(&cadastro_passageiros, sizeof(PASSAGEIROS), 1, fPtr);
}
}
if(op == 2)
{
fseek(fPtr, (id - 1) * sizeof(PASSAGENS), SEEK_SET);
fread(&cadastro_passagens, sizeof(PASSAGENS), 1, fPtr);
if (cadastro_passagens.id != 0)
printf("Passagem #%d ja contem informacoes.\n", cadastro_passagens.id);
else
{
printf("Digite a data da venda e valor: ");
scanf("%s%f", &cadastro_passagens.dataVenda, &cadastro_passagens.valor);
cadastro_passagens.id = id; // segmentation fault aparece depois de digitar o valor
fseek(fPtr, (long)(cadastro_passagens.id - 1) *sizeof(PASSAGENS),SEEK_SET);
fwrite(&cadastro_passagens, sizeof(PASSAGENS), 1, fPtr);
}
}
}

obrigada :)


  


2. Re: Problema com arquivos

Perfil removido
removido

(usa Nenhuma)

Enviado em 10/11/2011 - 12:21h

Sem ver como esta declarado o cadastro_passagens fica meio dificil, mas eu chuto que voce tem que passar o endereco do cadastro_passagens.id para igualar ao id escolhido la no comeco da funcao.
Parece que voce esta passando o endereco do ponteiro, e nao da estrutura em si.


3. Re: Problema com arquivos

Perfil removido
removido

(usa Nenhuma)

Enviado em 10/11/2011 - 15:48h

O cadastro de passageiros é uma struct.
A declaração foi feita assim.

typedef struct
{
int id;
long int telefone;
char endereco[350], identidade[20], nome[250];
char sexo;
} PASSAGEIROS;
PASSAGEIROS cadastro_passageiros;







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts