Подтвердить что ты не робот

Как загрузить весь файл в строку в C

Возможный дубликат:
Самый простой способ получить содержимое файла в C

Моя программа читает файлы, которые охватывают несколько строк. Я хотел бы сохранить содержимое файла в одной строке.

Я не знаю количество строк моего файла перед исполнением, однако я установил размер строки в MAX_LINE_LEN.

Как вы можете это сделать?

4b9b3361

Ответ 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;

Ответ 2

1) укажите размер файла с fstat.

2) назначить нулевой буфер этой длины + 1

3) используйте fread для чтения содержимого файла в буфер