Programação em C/C++
Prof. Márcio Sarroglia Pinho

Uso de Arquivos Binários


Criação de Arquivos

Para usar as funções de manipulação de arquivo o programador deve incluir a STDIO.H

Para usar um arquivo em C é necessário abrí-lo. Para tanto, a linguagem C possui o comando fopen.
   arq = fopen("ArqGrav.dat", "rb");
O primeiro parâmetro é o nome do arquivo, o segundo a forma de abertura:

    "wb": abertura para gravação, arquivo binário
    "rb": abertura para leitura, arquivo binário

A função fopen retorna um "apontador" para o arquivo caso consiga abrí-lo. caso contrário, retorna a constate NULL.

Exemplo:

FILE *arq;
int result;
char Str[50];

arq = fopen("ArqGrav.Dat", "rb");

if (arq == NULL)
{
    printf("Problemas na abertura do arquivo\n");
    return;
}


Gravação

        Para gravação de arquivos texto usa-se a função  fwrite.

Exemplo de fwrite:

// ************************************************************
// Exemplo de uso de arquivo binário
// Este programa grava um vetor em um arquivo binário
//
// ************************************************************
#include <stdio.h>

void main()
{

    double Notas[100];
    FILE *arq;
    int result;
    int i;

    arq = fopen("ArqTeste.dat", "wb"); // Cria um arquivo binário para gravação

    if (arq == NULL) // Se não conseguiu criar
    {
        printf("Problemas na CRIACAO do arquivo\n");

   	return;
}
    // Grava 30 números do vetor a partir da posição 50
    result = fwrite (&Notas[50], sizeof(double), 30, arq);

    printf("Nro de elementos gravados: %d", result);
    fclose(arq);

}



Leitura

        Para leitura de arquivos texto usa-se a função fread.

result = fread (ponteiro_area_onde_armazenar_os_dados, tam_de_cada_elemento, nro_de_elementos, arq);

       A função retorna o número total de elementos lidos, que pode ser menor do que o que foi especificado na chamada da rotina.

// ************************************************************
// Exemplo de uso de arquivo binário
// Este programa lê um arquivo binário e imprime o seu
// conteudo na tela.
// ************************************************************
#include <stdio.h>

void main()
{
FILE *arq;
double Vet[100];
int result; int i;
  // Abre um arquivo BINÁRIO para LEITURA
  arq = fopen("ArqTeste.dat", "rb");
  if (arq == NULL)  // Se houve erro na abertura
{
printf("Problemas na abertura do arquivo\n");
return;
}
  result = fread (&Vet[0], sizeof(double), 100, arq);
printf("Nro de elementos lidos: %d\n", result);

for (i=0; i<result; i++)
printf("%lf\n", Vet[i]);

fclose(arq);
}