Ответ 1
Функция fread()
не волнует разрывы строк. Следующий код считывает содержимое input_file_name
и сохраняет их в массив file_contents
:
char *file_contents;
long input_file_size;
FILE *input_file = fopen(input_file_name, "rb");
fseek(input_file, 0, SEEK_END);
input_file_size = ftell(input_file);
rewind(input_file);
file_contents = malloc(input_file_size * (sizeof(char)));
fread(file_contents, sizeof(char), input_file_size, input_file);
fclose(input_file);
Вы можете сделать только строку этого массива, если input_file_name
содержит символ \0
. Если это не так, измените последние три строки на:
file_contents = malloc((input_file_size + 1) * (sizeof(char)));
fread(file_contents, sizeof(char), input_file_size, input_file);
fclose(input_file);
file_contents[input_file_size] = 0;