Полностью прочитать файл в переменную - 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;
}

Объяснение кода листинга программы

  1. Подключаем необходимые библиотеки
  2. Определяем точку входа в программу
  3. Объявляем переменные:
    • FILE* f - указатель на файл
    • char* buf - указатель на буфер
  4. Открываем файл в режиме чтения (rb)
  5. Проверяем, что файл успешно открылся, иначе выводим сообщение об ошибке и завершаем программу
  6. Узнаем размер файла
  7. Выделяем память под буфер
  8. Читаем файл в буфер
  9. Выводим содержимое буфера на стандартный поток
  10. Освобождаем память, выделенную под буфер
  11. Закрываем файл
  12. Завершаем программу

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы