rafaclara2401
(usa Outra)
Enviado em 14/07/2015 - 21:41h
Acho que só com essa parte do programa já dá pra entender o que quero.
void cadastrar()
{
fseek(arq,0,SEEK_SET);
fread(&linhas,sizeof(linhas),1,arq);
do
{
cout<<"\n\nCADASTRO";
cin.ignore();
cout<<"\n\nNome do aluno: ";
cin.getline(d.nome,40);
cout<<"\n\nIdade do aluno: ";
cin>>d.idade;
cout<<"\n\nNome: "<<d.nome;
cout<<"\nIdade: "<<d.idade;
cout<<"\n\nOs dados estao corretos ? (S/N)";
cin>>op2;
if (op2=='S')
{
salto=sizeof(d)*linhas,sizeof(linhas);
fseek(arq,salto,SEEK_SET);
d.matricula++; //AQUI É O PROBLEMA
fprintf(arq,"%d",d.matricula);
fwrite(&d,sizeof(d),1,arq);
fseek(arq,0,SEEK_SET);
linhas++;
fwrite(&linhas,sizeof(linhas),1,arq);
cout<<"O numero de matricula de "<<d.nome<<" e "<<d.matricula;
do
{
cout<<"\n\nDeseja cadastrar um outro aluno ? (S/N)"; cin>>op;
}while ((op != 'S')&&(op != 'N'));
}
}while (op != 'N');
}
Meu programa cadastra o aluno no sistema e gera um numero de matricula para ele. Eu declarei que d.matricula=0, para começar em 0 e sempre ser incrementado em +1 toda vez que uma matrícula é realizada. O programa faz isso perfeitamente enquanto está rodando, porém, se eu fechar o programa e abri de novo, ele começa a cadastrar de novo a partir da matricula numero 1. Eu queria que por exemplo, eu cadastrei um aluno (o numero de matricula dele é 1) e fechei o programa. Quando eu abrisse o programa de novo e cadastrasse outro aluno, o numero de matricula dele fosse 2. Mas isso não acontece, sempre que eu fecho o programa, ele zera o numero das matriculas.
O que eu faço ?