Escolar Documentos
Profissional Documentos
Cultura Documentos
um arquivo binrio
rewind(f); //volto o ponteiro para a primeira
posio do arquivo
fread(&l,sizeof(int),1,f); //leio l da primeira
posio do arquivo
fread(&c,sizeof(int),1,f); //leio c da segunda
posio do arquivo
printf("Matriz m[%d][%d] =\n",l,c); //imprimo o
cabealho da matriz na tela
Registros
E com registros?
Registros
Exemplo leitura...:
typedef struct {
char nome[20];
float media;
}tipo_aluno;
tipo_aluno a;
tipo_aluno vet[100];
fread(&a,sizeof(tipo_aluno),1,f);
//lendo um registro;
fread(&vet,sizeof(tipo_aluno),100,f); /
/lendo o vetor todo
fread(&vet,sizeof(vet),1,f); //lendo o
vetor todo;
Registros
Exemplo escrita:
typedef struct {
char nome[20];
float media;
}tipo_aluno;
tipo_aluno a;
tipo_aluno vet[100];
fwrite(&a,sizeof(tipo_aluno),1,f); //escrevendo
um registro;
fwrite(&vet,sizeof(tipo_aluno),100,f); //
escrevendo o vetor todo
fwrite(&vet,sizeof(vet),1,f); // escrevendo o
vetor todo;
_Funo:
fseek (ponteiro_para_arquivo,
posicao_relativa, marcao);
#include<stdio.h>
#include<stdlib.h>
typedef char Disc[5]; //definindo um tipo
de dado novo
typedef struct{
int RA;
char nome[30];
Disc matriculas[6]; //vetor do novo tipo
definido Disc
float CR;
}tipo_Reg_aluno;
fseek(f, 2 * sizeof(tipo_Reg_aluno),
SEEK_SET);
//posiciono o ponteiro no segundo registro
fread(&aux, sizeof(tipo_Reg_aluno), 1, f);
//leio o registro e guardo em aux
aux.RA = 61122; //altero o ra do aluno
fseek(f, 2 * sizeof(tipo_Reg_aluno), SEEK_SET);
//posiciono o ponteiro denovo no registro
fwrite(&aux, sizeof(tipo_Reg_aluno), 1, f);
//Sobrescrevo o registro atualizado no arquivo
fclose(f); //fecho o arquivo
Exerccio 1
Dado o arquivo numeros.bin que possui
em sua primeira posio
um inteiro que indica a quantidade de
elementos de um vetor e
nas demais posies valores inteiros:
Ex: 100 10 5 15 21 3 99 101 458 22 ....
a) Escreva um programa que leia os
elementos do arquivo e
guarde-os em um vetor;
b) Verifique se cada nmero primo;
c) Armazene os nmeros primos em um
novo arquivo binrio que
deve ter o seguinte formato:
na primeira posio a quantidade de
primos
Nas demais posies os nmeros primos
Utilize a funo ehprimo para verificar se
um nmero primo para
verificar se cada nmero primo
Exerccio 1
// --------------------funo eh
primo------------------------------------------
Exerccio 2
Baseando-se no exemplo Exemplo
fseek e registros altere
o programa para que ele atualize o CR
de uma aluno
informado pelo usurio. O usurio
informa o RA do aluno e
o novo CR.
O programa deve localizar o aluno pelo
RA e atualizar o
registro no arquivo.
MC-102
Algoritmos e
Programao
de Computadores
Prof. Ariel Vargas
Unicamp
Arquivos Binrios
Arquivos
_ Arquivos Texto
_ Podem ser manipulados por um
editor de texto comum
_ Os dados so gravados como
caracteres de 8 bits (1
byte). Ex:
_ O nmero 12345678 ocupa 8 bytes, ou seja,
64 bits
_ Arquivos Binrios
_ Dados so gravados na forma binria
_ Costumam ser mais compactos. Ex:
Arquivos Binrios
_ Abrir um arquivo:
_ ponteiro_para_arquivo = fopen
(nome_arquivo, modo_abertura);
_ Fechar um arquivo:
_ fclose (ponteiro_para_arquivo);
Arquivos Binrios
_ Alguns modos de abertura: (tem um
b agora)
endereco_memoria, tamanho_tipo_de_dado,
numero_elementos, ponteiro_para_arquivo
for (i=0;i<n;i++){
fread(&v2[i],sizeof(int),1,f); //leio cada posio do vetor e
armazeno em v2 na tela
printf("%d ",v2[i]) ; //imprimo cada posio de v2
Arquivos Binrios
Arquivos Binrios
Escrever dados em um arquivo binrio:
fwrite (endereco_da_variavel,
tamanho_tipo_de_dado,
numero_elementos,
ponteiro_para_arquivo);
Ex:
Int n = 10;