OldWildWeb Logo

Leggere e scrivere files di grandi dimensioni in C

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



Files di grandi dimensioni in C