Полностью прочитать файл в переменную - C (СИ)
Формулировка задачи:
Есть файл, с пробелами и энтерами. Надо записать его в одну переменную типа char* заменяя энтеры на \n. То есть, чтобы потом, если его вывести printf'ом получилось то же что и было в файле. Как это сделать?
Решение задачи: «Полностью прочитать файл в переменную»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int main(int argc, char** argv){ FILE* f; // открываем файл if((f = fopen("in", "rb")) == NULL){ printf("Error opening file 'in'"); return 0; } // узнаем размер файла для создания буфера нужного размера fseek(f, 0L, SEEK_END); long size = ftell(f); fseek(f, 0L, SEEK_SET); // выделяем память под буфер char* buf = (char*)malloc(sizeof(char) * size); // читаем полностью весь файл в буфер fread(buf, 1, size, f); // выводим содержимое буфера в стандартный поток fprintf(stdout, "%s", buf); // и обязательно освобождаем память выделенную под буфер free(buf); // закрываем файл fclose(f); return 0; }
Объяснение кода листинга программы
- Подключаем необходимые библиотеки
- Определяем точку входа в программу
- Объявляем переменные:
FILE* f
- указатель на файлchar* buf
- указатель на буфер
- Открываем файл в режиме чтения (
rb
) - Проверяем, что файл успешно открылся, иначе выводим сообщение об ошибке и завершаем программу
- Узнаем размер файла
- Выделяем память под буфер
- Читаем файл в буфер
- Выводим содержимое буфера на стандартный поток
- Освобождаем память, выделенную под буфер
- Закрываем файл
- Завершаем программу
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д