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 :)