Lets say we want to read the contents of some file and want to operate on these contents using C program. In this case, we first need to read the complete file into buffer and work on to this character buffer to do what we want to do.
Following c program, copied the contents of JSON file test_file.json into buffer [ You can do whatever you want which this bufffer ]
$ vim read_file_to_buffer.c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
char *read_file(const char *filename) {
ssize_t size;
int fd, len;
struct stat st;
char *buf;
stat(filename, &st);
len = st.st_size;
buf = (char *)malloc(len+1);
fd = open(filename, O_RDONLY);
if (fd == -1) {
free(buf);
return NULL;
}
size = read(fd, buf, len);
if (size > 0) {
buf[len]='\0';
close(fd);
printf("read bytes : %d, len:%d\n", strlen(buf), len);
return buf;
}
close(fd);
return NULL;
}
int main(void) {
char *buf = NULL;
buf = read_file("./test_file.json");
free( buf );
return 0;
}
Compile the above code as,
$ gcc -o read_file_to_buffer read_file_to_buffer.c
Run the program as,
$ ./read_file_to_buffer
This program assumes, the file we need to read test_file.json is present in the current directory from where this program is executed, if not you can customise the program as you want.