Documente Academic
Documente Profesional
Documente Cultură
numero_elementos, ponteiro_para_arquivo
E da....
Nenhuma vantagem at
agora....
#include<stdio.h>
#include<stdlib.h>
int main(){
int i, v[20] = {0, 1, 2, 3 ,4, 5, 6, 7, 8, 9,10, 11, 12, 13, 14, 15, 16, 17, 18, 19};
int v2[20];
FILE *f; //ponteiro para arquivo
int n = 20;
fread(&v2,sizeof(int),n,f);
Lendo e escrevendo Vetores de um
arquivo binrio
Matrizes
E como seria se eu
precisasse trabalhar com
uma matriz em um arquivo?
#include<stdio.h>
#include<stdlib.h>
int main(){
int i,j, m[4][5] = {0,1,2,3,4,
5,6,7,8,9,
10,11,12,13,14,
15,16,17,18,19};
int m2[4][5];
FILE *f; //ponteiro para arquivo
int l = 4;
int c = 5;
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);
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
Exerccio 1
// --------------------funo eh
primo-----------------------------------------int ehprimo (int n){ // n o parmetro de
entrada
int resto,i, primo=1; //define primo como
verdadeiro
for (i=2;i<n;i++){ // divide o n por todos os
anteriores
resto = n % i;
if (resto == 0)
primo=0;
} if (
primo)
return 1; // retorna verdadeiro, primo
else
return 0; // retorna falso, no primo
} //------------------------------------------------------------------------------
Exerccio 2
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:
_ O nmero 12345678 ocupa 4 bytes
(considerado-se uma
mquina na qual um nmero inteiro
representado por 32
bits)
Arquivos Binrios
_ Para abrir e fechar uma arquivo
binrio usa-se, da mesma
forma, as funes: (no muda nada!!!)
_ 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)
_ rb - abre arquivo binrio para leitura
_ wb - cria arquivo binrio para gravao,
eliminando o contedo
anterior, se houver
_ ab - abre ou cria um arquivo binrio para
gravao em seu final
_ r+b - abre arquivo binrio para leitura e
gravao no incio
_ w+b - cria arquivo binrio para
leitua/gravao no incio
_ a+b - abre ou cria arquivo binrio para
leitura no incio e
gravao no final
Arquivos Binrios
Ler dados de um arquivo binrio:
fread (endereco_da_variavel,
tamanho_tipo_de_dado,
numero_elementos,
ponteiro_para_arquivo);
Ex:
Int n;
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;