34 lines
663 B
C
34 lines
663 B
C
#include "file.h"
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
char *read_file(const char *path) {
|
|
FILE *fp = fopen(path, "rb");
|
|
if (fp == NULL) {
|
|
perror("Error opening file");
|
|
return nullptr;
|
|
}
|
|
|
|
fseek(fp, 0, SEEK_END);
|
|
long file_size = ftell(fp);
|
|
rewind(fp);
|
|
|
|
char *buffer = (char *) malloc(file_size + 1);
|
|
if (!buffer) {
|
|
perror("Error allocating memory");
|
|
fclose(fp);
|
|
return nullptr;
|
|
}
|
|
|
|
size_t bytes_read = fread(buffer, 1, file_size, fp);
|
|
if (bytes_read != file_size) {
|
|
perror("Error reading file");
|
|
free(buffer);
|
|
fclose(fp);
|
|
return nullptr;
|
|
}
|
|
|
|
buffer[file_size] = '\0';
|
|
fclose(fp);
|
|
return buffer;
|
|
} |