HI I am trying to go through large file handling using C. I have a text file called test size is more than 6 GB. Following is my code :
Code:
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#define _FILE_OFFSET_BITS 64
int main(void)
{
FILE *fptr;
off64_t ftell_output;
int count = 0;
off64_t fseek_offset = 2147483634;
fptr = fopen64("/PARIMAL/test","r");
if(fptr == NULL)
{
perror("fptr is null");
}
while (count == 0)
{
if ((ftell_output = ftello64(fptr)) < 0)
{
perror("ftell failed");
}
printf("value of ftell_output is %lld\n",ftell_output);
if(fseeko64(fptr ,fseek_offset++,SEEK_SET) < 0)
{
perror("error feesk");
exit(2);
}
}
return 0;
}
the output is :
value of ftell_output is 2147483634
value of ftell_output is 2147483635
value of ftell_output is 2147483636
value of ftell_output is 2147483637
value of ftell_output is 2147483638
value of ftell_output is 2147483639
value of ftell_output is 2147483640
value of ftell_output is 2147483641
value of ftell_output is 2147483642
value of ftell_output is 2147483643
value of ftell_output is 2147483644
value of ftell_output is 2147483645
value of ftell_output is 2147483646
value of ftell_output is 2147483647
ftell failed: Error 0
value of ftell_output is -2147483648
ftell failed: Error 0
value of ftell_output is -2147483647
ftell failed: Error 0
value of ftell_output is -2147483646
ftell failed: Error 0
value of ftell_output is -2147483645
ftell failed: Error 0
value of ftell_output is -2147483644
ftell failed: Error 0
value of ftell_output is -2147483643
ftell failed: Error 0
value of ftell_output is -2147483642
ftell failed: Error 0
value of ftell_output is -2147483641
ftell failed: Error 0
value of ftell_output is -2147483640
ftell failed: Error 0
Why does the return of ftell go negative ??
for compilation am using following command :
cc -o program -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE file.c
Please help.