Skip to content

Latest commit

 

History

History
120 lines (96 loc) · 8.53 KB

file-io.md

File metadata and controls

120 lines (96 loc) · 8.53 KB

Взаємодія з файлами

Структура директорії для лабораторної роботи

└── lab14
    ├── Doxyfile
    ├── Makefile
    ├── README.md
    ├── assets
    │   └── input.txt
    ├── test
    │   └── test.c
    ├── doc
    │   └── lab14.md
    └── src
        ├── lib.c
        ├── lib.h
        └── main.c

Зверніть увагу. Вхідні дані розташовані у файлі assets/input.txt. Програма повинна прийняти у якості аргументу шлях до цього файлу. output.txt - файл для запису результатів. Приклад передачі файлу у якості параметра додатка main.bin:

cd lab14
./dist/main.bin "./assets/input.txt" "./dist/output.txt"

Розмір буферу повинен бути визначений через визначення розміру файлу з даними.

Загальне завдання

  • початкові дані вводилися з файлу;
  • видача результуючих даних провадилася не тільки у консоль, але й у файл (але його не повинно бути у системі контролю версіями).
  • ім'я вхідного файлу та результуючого фалу повинно отримано від користувача за допомогою аргументів додатку;
  • робота з файлом повинна бути використована за допомогою функцій fprintf() та fscanf();
  • очікується, що при запуску програми з параметрами командної строки, нічого від користувача не буде очікуватись.

Рекомендації щодо (приклад) прототипів функцій роботи з файлами:

void read_from_file(FILE *f, char* result, int buf_size);
void write_to_file(FILE *f, char* data);

Індивідуальні завдання.

Виконати одне завдання з пулу завдань на свій розсуд згідно її складності (що впливає на максимальну оцінку, що може бути отримана за лабораторну роботу). Зверніть увагу. Викладач має право надати вам додаткове завдання для виконання.

  1. Розробити програму, що в заданому файлі створює суцільний рівнобедрений трикутник із заданих символів (наприклад, зірочок). Висота трикутника, символ заповнювача та ширина основи задається у вхідному файлу. Наприклад, при висоті 4, ширині 7 та заповнювачі * результат у файлі потрібен бути наступним:
		      *
		    * * *
		  * * * * *
		* * * * * * *
  1. Розробити програму, що в заданому файлі створює порожнистий рівнобедрений трикутник із заданих символів (наприклад, зірочок). Висота трикутника, символ заповнювача та ширина основи задається у вхідному файлу. Наприклад, при висоті 4, ширині 7 та заповнювачі * результат у файлі потрібен бути наступним:
		      *
		    *   *
		  *       *
		* * * * * * *
  1. (**) Розробити програму, що в заданому файлі створює горизонтальну синусоїду із заданих символів (наприклад, зірочок). Амплітуда синусоїди, символ заповнювача та період задається у вхідному файлу. Наприклад, при амплітуді 5, періоді 40 та заповнювачі * результат у файлі потрібен бути наступним:
	            *****                           
	         ***     ***                        
	        *           *                       
	      **             **                     
	     *                 *                    
	    *                   *                   
	                         *                 *
	                          **             ** 
	                            *           *   
	                             ***     ***    
	                                *****       

Серія завдання "про матриці":

Дано файл, що містить інформацію про матрицю. В першої строці надається інформація про розмір (напр., "3 5"). У кожному наступному рядку надається інформація про елементи рядку матриці. Результат операції записати до результуючого файлу.

  1. Визначити максимальний елемент
  2. Визначити суму елементів, що розташовані поверх головної діагоналі.
  3. Визначити суму елементів, що розташовані знизу побічної діагоналі.
  4. Визначити всі прості елементи діагоналі
  5. (*) Визначити детермінант матриці якщо він існує.

Для виконання наступних завдань рекомендується використовувати функції та структури хедер файлу dirent.h:

  1. (*) Видати на екран розмір запитаного файлу та його атрибути. Виклик функції system заборонено.
  2. (**) Вивести структуру файлів та каталогів, як це робить утиліта Linux tree. Виклик функції system заборонено.
  3. (**) Визначити розмір запитаного каталогу. Результат нормалізувати. Формат розміру:
    • не більше ніж 3 знаки до коми;
    • не більше ніж 2 знаки після коми;
    • єдиний випадок, коли в чисельний частині числа може бути 0 - коли розмір дорівнює 0 байт.

Обов'язково забезпечити!!!

  • програма має мати документацію, що оформлена за допомогою утиліти doxygen;
  • звіт повинен бути оформлений згідно "Вимогам до структурної побудови звіту";
  • продемонструвати відсутність витоків пам’яті;
  • доступ до елементів масиву здійснювати через розіменування покажчиків, а не через оператор індексування ([ ]);
  • продемонструвати роботу розроблених методів за допомогою модульних тестів;
  • у звіті навести ступень покриття коду модульними тестами. 50% - є мінімально допустимим відсотком покриття коду тестами.

Контрольні питання.

  1. Що таке файл?
  2. Які існують функції неформатованого введення даних?
  3. Які існують функції неформатованого виведення даних?
  4. Як визначити розмір файлу?
  5. Як виконувати читання даних з файлу, коли кількість їх невідома?
  6. Чи можна форматувати дані при їх записі у файл?
  7. Як ввести з файлу та записати у файл рядки?
  8. Як ввести з файлу та записати у файл символ?
  9. Порівняйте текстові та бінарні файли.