Guest Marcus Vinícius de M. Silva Postado Outubro 23, 2006 Denunciar Share Postado Outubro 23, 2006 Olá pessoal, preciso de uma função que não deixe eu cadastrar um aluno mais de uma vez!!!A minha função cadastrar está ai em baixo, alguém pode me ajudar???// função - Cadastrar Dados de um aluno// parâmetros - nenhum// retorno - nenhumvoid cadastraAluno(void){infoAluno Aluno;FILE *arq_Aluno; clrscr(); printf("%50s\n\n\n","CADASTRAR ALUNO"); printf("Nome do Aluno:"); fflush(stdin); gets(Aluno.nomeAluno); printf("Matricula do Aluno: "); gets(Aluno.matriculaAluno); printf("Nome da Mae: "); gets(Aluno.nomeMaeAluno); printf("Data de Ingresso:(dd/mm/aaaa):"); scanf("%d%d%d",&Aluno.dataIngresso[0],&Aluno.dataIngresso[1], &Aluno.dataIngresso[2]); arq_Aluno = fopen("Projeto Final_DadosAlunos.txt","ab"); if(arq_Aluno == NULL) { printf("ERRO NA ABERTURA DO ARQUIVO\n"); } else { if(fwrite(&Aluno,sizeof(infoAluno),1,arq_Aluno)==1) { printf("Sucesso\n"); } else { printf(" Erro ao gravar dados \n"); } fclose(arq_Aluno); }} Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kandrade Postado Outubro 23, 2006 Denunciar Share Postado Outubro 23, 2006 antes de inserir o dado no arquivo voce precisa compara-lo com todos os outros dados que já estão armazenados,veja só no trecho abaixo: arq_Aluno = fopen("Projeto Final_DadosAlunos.txt","ab"); //o parametro "a" indica que voce vai anexar algo no fim do arquivo, como antes voce precisa passar por todo arquivo antes de inserir substitua o "a" por "r" ou use a funcao rewind(arq_Aluno); que faz o ponteiro do arquivo voltar ao inicio. if(arq_Aluno == NULL) { printf("ERRO NA ABERTURA DO ARQUIVO\n"); } else { //aqui voce deve comparar seus dados com todo o conteudo do arquivo //use a funcao fread até encontrar EOF, voce pode usar o retorno da funcao para te ajudar //a funcao fread retorna o numero de elementos que leu "terceiro parametro" em caso de sucesso. //so depois de passar por todos elementos voce pode inserir os dados, como abaixo if(fwrite(&Aluno,sizeof(infoAluno),1,arq_Aluno)==1) { printf("Sucesso\n"); } . . . Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Visitante Postado Outubro 24, 2006 Denunciar Share Postado Outubro 24, 2006 antes de inserir o dado no arquivo voce precisa compara-lo com todos os outros dados que já estão armazenados,veja só no trecho abaixo: arq_Aluno = fopen("Projeto Final_DadosAlunos.txt","ab"); //o parametro "a" indica que voce vai anexar algo no fim do arquivo, como antes voce precisa passar por todo arquivo antes de inserir substitua o "a" por "r" ou use a funcao rewind(arq_Aluno); que faz o ponteiro do arquivo voltar ao inicio. if(arq_Aluno == NULL) { printf("ERRO NA ABERTURA DO ARQUIVO\n"); } else { //aqui voce deve comparar seus dados com todo o conteudo do arquivo //use a funcao fread até encontrar EOF, voce pode usar o retorno da funcao para te ajudar //a funcao fread retorna o numero de elementos que leu "terceiro parametro" em caso de sucesso. //so depois de passar por todos elementos voce pode inserir os dados, como abaixo if(fwrite(&Aluno,sizeof(infoAluno),1,arq_Aluno)==1) { printf("Sucesso\n"); } . . . Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Visitante Postado Outubro 27, 2006 Denunciar Share Postado Outubro 27, 2006 Desculpa mas estou com dificuldade em aplicar a dica...Será que alguém poderia me dizer como eu vou fazer pra "varrer" o meu arquivo e verificar usando a função fread???? Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest Marcus Vinícius de M. Silva
Olá pessoal, preciso de uma função que não deixe eu cadastrar um aluno mais de uma vez!!!
A minha função cadastrar está ai em baixo, alguém pode me ajudar???
// função - Cadastrar Dados de um aluno
// parâmetros - nenhum
// retorno - nenhum
void cadastraAluno(void)
{
infoAluno Aluno;
FILE *arq_Aluno;
clrscr();
printf("%50s\n\n\n","CADASTRAR ALUNO");
printf("Nome do Aluno:");
fflush(stdin);
gets(Aluno.nomeAluno);
printf("Matricula do Aluno: ");
gets(Aluno.matriculaAluno);
printf("Nome da Mae: ");
gets(Aluno.nomeMaeAluno);
printf("Data de Ingresso:(dd/mm/aaaa):");
scanf("%d%d%d",&Aluno.dataIngresso[0],&Aluno.dataIngresso[1],
&Aluno.dataIngresso[2]);
arq_Aluno = fopen("Projeto Final_DadosAlunos.txt","ab");
if(arq_Aluno == NULL)
{
printf("ERRO NA ABERTURA DO ARQUIVO\n");
}
else
{
if(fwrite(&Aluno,sizeof(infoAluno),1,arq_Aluno)==1)
{
printf("Sucesso\n");
}
else
{
printf(" Erro ao gravar dados \n");
}
fclose(arq_Aluno);
}
}
Link para o comentário
Compartilhar em outros sites
3 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.