Laboratório de Técnicas de Programação
description
Transcript of Laboratório de Técnicas de Programação
Laboratório de Técnicas de Programação
Slide 03 – Arquivos (continuação)
Instituto Metodista Isabela HendrixCurso de Análise e Desenvolvimento de Sistemas
Juliano Amorim de [email protected]
Arquivos binários
Motivação para Arquivos Binários Por que usar arquivos binários? Texto não é
suficiente?
Variáveis int ou float têm tamanho fixo (por exemplo, 4 bytes) na memória
Representação em texto precisa de um numero variável de dígitos (10, 5.673, 100.340).
Armazenar em arquivos de movo análogo ao utilizado em memoria permite Reduzir o tamanho do arquivo Realizar buscas não seqüenciais
Arquivos binários e registros Um arquivo pode armazenar registros
(como um banco de dados) O acesso a cada registro pode ser direto
Acesso aleatório Com arquivos texto temos que ler o
arquivo, seqüencialmente, até encontrar a posição desejada
Arquivos binários e registros Imagine o seguinte registro
Podemos ter diversos registros desse tipo em um arquivo binário Todos terão o mesmo tamanho
José da Silva 20 1500,00
Nome idade salário
Fulano de Tal 65 415,00
Ciclano de Tal 48 3200,00
Maria João 37 2800,00
Arquivos binários e registros Como todos os registros tem tamanhos fixos é
possível pular o cursor de posição direto para um registro específico Se eu quisesse mover para o início do terceiro registro
bastaria mover para a posição 2 * tamanho do registro
José da Silva 20 1500,00
Fulano de Tal 65 415,00
Ciclano de Tal 48 3200,00
Maria João 37 2800,00
cursor
Lendo e escrevendo em arquivos binários Assim como os arquivos textos, arquivos binários
precisam ser abertos antes de sua manipulação e fechados depois do término de seu uso A forma de abrir arquivos binários é a mesma de
arquivos texto Na função fopen deve ser observado o modo de
abertura Por exemplo, se o arquivo será apenas lido usa-se “rb”
e se será escrito “wb” Não esquecer do sufixo b, que indica binário
O uso da função fclsose não tem alteração
Lendo e escrevendo em arquivos binários Para ler e escrever em arquivos binários
utilizaremos as funções fread e fwrite.
size_t fread (void *ptr, size_t size, size_t nmemb, FILE *parq);
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *parq);
A função fread
result = fread( &num , sizeof(int) , 1 , fp);result = fread( &num , sizeof(int) , 1 , fp);
Quantidade de elementos a serem lidos
Quantidade de elementos a serem lidos
Tamanho, em bytes, de cada elemento
Tamanho, em bytes, de cada elemento
Variável onde serão armazenados os dados lidos
Variável onde serão armazenados os dados lidos
Ponteiro de arquivo de onde os dados serão
lidos
Ponteiro de arquivo de onde os dados serão
lidos
O número de elementos lidos. Caso haja erro o retorno é menor ou zero.
O número de elementos lidos. Caso haja erro o retorno é menor ou zero.
A função fwrite
result = fwrite( &num , sizeof(int) , 1 , fp);result = fwrite( &num , sizeof(int) , 1 , fp);
Variável onde serão recuperados os dados a serem
escritos.
Variável onde serão recuperados os dados a serem
escritos.
Ponteiro de arquivo para onde os dados
serão escritos.
Ponteiro de arquivo para onde os dados
serão escritos.
O número de elementos escritos. Caso haja erro o retorno é menor ou zero.
O número de elementos escritos. Caso haja erro o retorno é menor ou zero.
Quantidade de elementos a serem lidos
Quantidade de elementos a serem lidos
Tamanho, em bytes, de cada elemento
Tamanho, em bytes, de cada elemento
Acesso aleatório A função fseek permite alterar a posição de
leitura/escrita no arquivo int fseek(FILE *fp, long offset, int whence);
O deslocamento pode ser relativo ao início do arquivo (SEEK_SET) ponto atual (SEEK_CUR) final do arquivo (SEEK_END)