Exemplos de Tipos Estruturados com Arquivos
Exemplo de armazenamento e recuperação de estruturas de arquivos na linguagem c
#include <stdio.h> #include <stdlib.h> typedef struct aluno{ char nome[30]; int matricula; int periodo; }aluno; typedef struct turma{ int tamanho; aluno alunos[30]; }turma; void cadastrar_aluno(aluno a,turma *t); void imprimir_aluno(aluno a); void imprimir_turma(turma t); int tam = 0; FILE * arquivo; int main(){ turma turma1;//alunos da turma 1 turma1.tamanho = 0; //abri arquivo para leitura int tamArq; printf("Abrindo arquivo para leitura...\n"); arquivo = fopen("agenda.txt","r"); //coloca o cursor de leitura no final do arquivo fseek (arquivo , 0 , SEEK_END); //descobre onde ele esta(em bytes),ou seja, o tamanho do arquivo tamArq = ftell (arquivo); printf("TamArq:%d\n",tamArq); fseek(arquivo, 0, SEEK_SET); //le do arquivo e coloca tudo na turma1. Imprime tambem o numero de bytes lidos printf("bytes lidos:%d\n",fread(&turma1,1,tamArq,arquivo)); fclose(arquivo); //cadastra um aluno aluno a = {"Rhaul", 423423414, 5}; cadastrar_aluno (a, &turma1); //imprime a turma imprimir_turma (turma1); //abre o arquivo para escrita(apagando a versao anterior) arquivo = fopen("agenda.txt","w"); //grava novamente a turma inteira no arquivo fwrite(&turma1,sizeof(turma),1,arquivo); //fecha o arquivo fclose(arquivo); system("PAUSE"); return 0; } void imprimir_turma(turma t){ int i; for (i = 0 ; i < t.tamanho ; i++){ printf("aluno %d:\n", i); imprimir_aluno(t.alunos[i]); } } void imprimir_aluno(aluno a){ printf("%s\n", a.nome); printf("%d\n", a.matricula); printf("%d\n", a.periodo); } void cadastrar_aluno(aluno a, turma *t){ t->alunos[t->tamanho] = a; t->tamanho++; }
page revision: 2, last edited: 17 Jun 2010 03:26