W
William Pursell
You can easily get the size of a file:
FILE *in;
char *filedata;
long size_in_bytes;
in=fopen("file.txt","rb");
fseek(in,0,SEEK_END);
size_in_bytes = ftell(in);
fseek(in,0,SEEK_SET);
filedata = malloc(size_in_bytes);
fread(in,sizeof(char),size_in_bytes);
But you need to be careful:
$ cat a.c
#include <stdlib.h>
#include <stdio.h>
int
main( int argc, char **argv )
{
FILE *in;
char *filedata;
long size_in_bytes;
in=fopen("file.txt","rb");
fseek(in,0,SEEK_END);
size_in_bytes = ftell(in);
printf( "%ld\n", size_in_bytes );
}
$ ./a.out
-1
$ cat file.txt
foo
Not everything is a regular file.