1 / 11

Laboratório de Técnicas de Programação

Laboratório de Técnicas de Programação. Slide 03 – Arquivos (continuação). Juliano Amorim de Oliveira juliano.oliveira@metodistademinas.edu.br. Instituto Metodista Isabela Hendrix Curso de Análise e Desenvolvimento de Sistemas. Arquivos binários. Motivação para Arquivos Binários.

anika
Download Presentation

Laboratório de Técnicas de Programação

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Laboratório de Técnicas de Programação Slide 03 – Arquivos (continuação) Juliano Amorim de Oliveira juliano.oliveira@metodistademinas.edu.br Instituto Metodista Isabela Hendrix Curso de Análise e Desenvolvimento de Sistemas

  2. Arquivos binários

  3. 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

  4. 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

  5. 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 Maria João Ciclano de Tal Nome Fulano de Tal José da Silva 48 20 37 idade 65 1500,00 salário 415,00 3200,00 2800,00

  6. 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 Fulano de Tal Ciclano de Tal Maria João 20 65 48 37 1500,00 415,00 3200,00 2800,00 cursor

  7. 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

  8. 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);

  9. A função fread Tamanho, em bytes, de cada elemento Quantidade de elementos a serem lidos result = fread( &num , sizeof(int) , 1 , fp); O número de elementos lidos. Caso haja erro o retorno é menor ou zero. Variável onde serão armazenados os dados lidos Ponteiro de arquivo de onde os dados serão lidos

  10. A função fwrite Tamanho, em bytes, de cada elemento Quantidade de elementos a serem lidos result = fwrite( &num , sizeof(int) , 1 , fp); O número de elementos escritos. Caso haja erro o retorno é menor ou zero. Variável onde serão recuperados os dados a serem escritos. Ponteiro de arquivo para onde os dados serão escritos.

  11. 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)

More Related