Open, Read and Write large files in C
Programmazione » Large file read write open c linux
05/05/2018 - 550
How to handle large files in C with GCC under Linux
How to open large files in C Linux
Read,
open and
write large files in C is always a confusing topic due to the lack of documentation and clear examples, I have decided to share a code example of how to
handle large files in
C with GCC in this article.
To enable the
64 bit file functions we have to define the large file support constant with the following define,
#define _LARGEFILE64_SOURCE in the very 1st line of the code,
GCC will enable the
LFS (
large file support) if the constant is defined.
After that the function fopen64 can be used to open files in LFS mode, the function will return a standard FILE pointer as the standard fopen function, after that the standard functions can be used to
handle large files in C.
Large file support example GCC:
#define _LARGEFILE64_SOURCE //Must be at the very beginning of the source file
#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