#include typedef struct aluno { int RA; char nome[50]; float notas[4]; } aluno; int main() { int RA, i, opt = -1; aluno x; FILE *alunos; alunos = fopen("alunos.dat", "a+b"); if (alunos == NULL) { printf("Não foi possível abrir o arquivo alunos.dat.\n"); return 1; } while (opt != 3) { printf("\nDigite:\n" "(1) Para ler e armazenar os dados de um aluno\n" "(2) Para pesquisar dados de alunos pelo RA\n" "(3) Para sair\n"); scanf("%d", &opt); switch(opt) { case 1: printf("\nDigite o RA, o nome e as quatro notas:\n"); scanf("%d ", &x.RA); fgets(x.nome, 50, stdin); for (i = 0; i < 50; ++i) { if (x.nome[i] == '\n') { x.nome[i] = '\0'; break; } } for (i = 0; i < 4; ++i) scanf("%f", &x.notas[i]); fseek(alunos, 0, SEEK_END); fwrite(&x, sizeof(aluno), 1, alunos); break; case 2: printf("\nDigite o RA: "); scanf("%d", &RA); fseek(alunos, 0, SEEK_SET); for(;;) { fread(&x, sizeof(aluno), 1, alunos); if (feof(alunos)) { printf("Aluno não está cadastrado.\n"); break; } else if (x.RA == RA) { printf("\nDados do Aluno\nRA: %0.6d\n" "Nome: %s\nNotas: ", x.RA, x.nome); for (i = 0; i < 4; ++i) printf("%.1f ", x.notas[i]); printf("\n\n"); break; } } } } fclose(alunos); return 0; }