Você está aqui: C ::: Dicas & Truques ::: Arquivos e Diretórios |
Como escrever e ler inteiros int em um arquivo em modo binárioQuantidade de visualizações: 12157 vezes |
Em algumas situações precisamos escrever ou ler inteiros int em um arquivo em modo binário. Para isso nós podemos usar as funções fwrite() e fread(). Note como os arquivos são abertos em modo binário e o uso da função malloc() para construir um buffer que servirá para guardar os ints lidos do arquivo:----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
// arquivo no qual escreveremos ... note o uso
// de "b" para indicar o modo binário
FILE *arquivo = fopen("dados.dat", "wb");
int valor = 120; // valor a ser escrito
fwrite(&valor, sizeof(valor), 1, arquivo);
// vamos escrever outro valor
valor = 5388;
fwrite(&valor, sizeof(valor), 1, arquivo);
// vamos fechar o arquivo
fclose(arquivo);
// agora vamos verificar se os inteiros foram gravados
// corretamente
// vamos abrir o arquivo para leitura no modo binário
arquivo = fopen("dados.dat", "rb");
// vamos obter o tamanho do arquivo em bytes
fseek(arquivo, 0, SEEK_END);
long tam_arquivo = ftell(arquivo);
rewind(arquivo);
// vamos alocar memória para os dois ints no arquivo
int *buffer = (int*)malloc(sizeof(int) * (tam_arquivo / sizeof(int)));
// a memória foi alocada com sucesso?
if(buffer != NULL){
// vamos copiar o conteúdo do arquivo para o buffer
size_t resultado = fread(buffer, 1, tam_arquivo, arquivo);
// vamos verificar se a operação foi feita com sucesso
if(resultado == tam_arquivo){
puts("O conteudo do arquivo foi lido com sucesso:");
// vamos exibí-lo na tela
printf("%d\n", buffer[0]); // primeiro inteiro
printf("%d\n", buffer[1]); // segundo inteiro
}
}
fclose(arquivo); // fecha o arquivo
free(buffer); // libera a memória do buffer
system("pause");
return 0;
}
Lembre-se de que a cada vez que chamamos as funções fread() e fwrite() o ponteiro de arquivo é adiantado a quantidade de bytes lidos ou escritos. |
|
|
Desafios, Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
|
Python - Exercício Resolvido de Python NumPy - Como somar duas matrizes usando a biblioteca NumPy do Python C# - Como remover um elemento em uma determinada posição de uma List<T> do C# usando a função RemoveAt() |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






