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++; 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');}
Acho quo que só com essa parte do programa já da pra explicar o que quero.
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 ?
RESOLVIDO