Leggere e scrivere files di grandi dimensioni in C
Programmazione » Leggere scrivere file grande dimensione c
05/05/2018 - 549
Come leggere e scrivere un file grande in C
Come aprire files di grandi dimensioni in C
Leggere e
scrivere files di grandi dimensioni in C non è sempre banale come ci si aspetterebbe per lo più a causa di una documentazione non sempre chiara e precisa, sfortunatamente non esistono funzioni standard per gestire files di grandi dimensioni.
In questo articolo vedremo come
leggere e scrivere files di grandi dimensioni in C con
GCC su ambiente
Linux, verrà fornito anche un esempio di codice.
Per abilitare il supporto delle funzioni files a 64 bit bisogna come prima cosa definire una constante tramite la direttiva
#define _LARGEFILE64_SOURCE per abilitare il support
LFS (
large file support) in
GCC, questa definizione va messa prima di tutti gli includes.
Da questo momento in poi il compilatore
GCC garantirà l'accesso alla funzione
fopen64, questa funzione restituirà un puntatore di tipo FILE come la funzione standard fopen, una volta aperto il file si possono utilizzare tutte le funzioni standard per leggere e scrivere files di qualsiasi
dimensione in
C.
Qui sotto un esempio:
//La seguente definizione va inserita prima degli includes
#define _LARGEFILE64_SOURCE
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define BUFFER_SIZE 1024
int main(int argc, char** argv)
{
FILE *fd = fopen64("newFile.txt", "wb");
fprintf(fd, "This is a string");
fclose (fd);
char dataBuffer[BUFFER_SIZE];
int readen;
FILE *fdRead = fopen64("newFile.txt", "rb");
while ((readen = fread(dataBuffer, sizeof(char), BUFFER_SIZE, fdRead)) > 0)
{
printf("%s", dataBuffer);
memset(dataBuffer, 0, BUFFER_SIZE);
}
fclose (fdRead);
}
Output:
This is a string