Uso de Arquivos Binários
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árioA 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;
}
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;
return;// Grava 30 números do vetor a partir da posição 50
}
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);
}