Файли: створення, запис, читання

Інформація про навчальний заклад

ВУЗ:
Національний технічний університет України Київський політехнічний інститут
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2022
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Алгоритмізація та програмування

Частина тексту файла (без зображень, графіків і формул):

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» Алгоритмізація та програмування 2: Процедурне програмування ЗВІТ до лабораторної роботи № 1 «Файли: створення, запис, читання» Варіант 16 Дата «23» лютого 2022 ЗАВДАННЯ: 1. Ознайомитись з основними функціями для роботи з файлами. 2. У якості індивідуального завдання необхідно написати програмний код, що реалізує створення двовимірного квадратного масиву розмірністю SIZE; виконання початкової ініціалізації всіх елементів масиву; запис у файл початкових даних і значень всіх елементів двовимірного квадратного масиву; створює копію цього файлу з новим розширенням *.bak. 3. Роздрукувати (вивести на екран) протокол виконання програмного коду. 4. Вихідні дані вибрати за індивідуальними варіантами (див. Додаток B-1). Варіант завданнь: Лабораторна робота №7: За варінатом 16 – з таблиці з рисунка 1 варіант 4. / Рисунок 1. Теоритичні відомості: Покажчик на файл (змінна-покажчик типу FILE *) – це покажчик на інформацію, що визначає різні параметри файлу, включаючи його ім'я, стан та поточну позицію. Вказівник на файл ідентифікує конкретний дисковий файл та використовується потоком для виконання операцій введення/виводу. Для читання або запису файлу програма використовує вказівник на файл. Файлова змінна (наприклад, файл) створюється наступним оператором: FILE *file; Операція, за допомогою якої програма вперше запитує доступ до файлу, називається відкриттям файлу. Звільнення файлу в кінці роботи зазвичай називається закриттям файлу. Функція fopen() відкриває потік. Цією функцією керують три основні параметри: ім'я файлу, який слід відкрити, вид застосування файлу та вказівник на файл, повертається функцією. Синтаксис: FILE * fopen (char * filename, char * mode); Опис: функція fopen() відкриває файл, іменований параметром filename і пов'язує його з відповідним потоком stream. Функція fopen() повертає як результат адресний покажчик, який ідентифікуватиме потік stream у наступних операціях. Файл може бути відкритий у таких режимах (mode): r відкриття файлу лише для читання; w створення файлу для запису; а приєднання, відкриття для запису в кінець файлу або створення запису, якщо файл не існує; r+ відкриття існуючого файлу для оновлення (читання та запису); w+ створення нового файлу для зміни; a+ відкриття для приєднання; відкриття (або створення, якщо файл не існує) для оновлення на кінець файлу. Якщо файл відкривається або створюється в текстовому режимі, можна додати символ t до значення параметра mode (rt, w+t тощо); аналогічно, для специфікації бінарного режиму можна до значення параметра mode додати символ b (wb, a+b тощо). Важливо: Функція exit() використовується для припинення роботи програми з появою помилки. Якщо exit() звернулися з функції, викликаної головною програмою, то припиняє роботу вся програма, а не лише ця функція. Особливістю exit() те, що вона закриває будь-які файли, відкриті функцією fopen(). Це робить вихід із програми коректним. Аргументом exit() є номер коду помилки, він може передаватися іншій програмі, якщо вихідна припинила роботу. Існує угода, що 0 вказує на нормальне завершення, а будь-яке інше значення сигналізує про помилки. Блок копіювання даних: while(feof(infile) == 0) { ch = getc(infile); if(feof(infile) == 0) putc(ch, outfile); } Блок-схеми Повна програма: / Рисунок 2. Вивід програми: / Рисунок 3. / Рисунок 4. / Рисунок 5. / Рисунок 6. Код програми: Посилання на Repl.it: https://replit.com/join/obofrnarer-tr-15khavkin #include<stdio.h> #include <stdlib.h> //Зчитування вхідних данних з командної строки int main(int argc, char *argv[]){ if(argc != 50) { printf("За варіантом потрібно 49 елементів, помилка, зупинка програми\n"); exit(1); } printf("Зчитування с командного рядка було успішним, продовження роботи програми"); //Створення, ініціалізація та присвоення массива його значень з командної строки float arr[7][7]; int count=1; printf("\nІніціалізація вхідного двовимірного массиву\n"); for(int i=0; i<7; i++){ for(int j=0; j<7; j++){ arr[i][j]=atof(argv[count]); printf("\t%.2f\t", arr[i][j]); count++; } printf("\n"); } FILE *stream, *infile, *outfile; char ind[128]; char name[128]; int var; //Ввод початкових данних printf("\n\nВведіть початкові дані\n"); printf("Індекс академіної групи: "); scanf("%s", ind); printf("Прізвище студента: "); scanf("%s", name); printf("Варіант: "); scanf("%d", &var); stream = fopen("dir/Lab1.txt","w+"); //Запис данних у створений файл fprintf(stream,"Початкові дані:\nКПІ ім. Ігоря сікорського\nКафедра АПЕПС\nІндекс группи: %s\nПрізвище студента: %s\nНомер варіанту: %d\n", ind, name, var); fprintf(stream, "Вхідний масив:\n"); for(int i=0; i<7; i++){ for(int j=0; j<7; j++){ fprintf(stream, "%f ", arr[i][j]); } } fclose(stream);//Збереження та закритя файлу printf("Дані збережені успішно"); //Відкриття файлу який копіюють і файла який копіює if((infile = fopen("dir/Lab1.txt", "rb")) == NULL) { printf("Вихідний файл не був відкрит"); return 1; } if((outfile = fopen("dir/Lab1.bak", "wb")) == NULL) { printf("Вхідний файл не був відкрит"); return 1; } char ch; //Копіювання файлу while(feof(infile) == 0) { ch = getc(infile); if(feof(infile) == 0) putc(ch, outfile); } printf("\nДані скопійовані успішно"); fclose(outfile); fclose(infile); return 0; } Висновок: У цій лабораторної роботі ознайомилися з основними функціями для роботи з файлами, а також основний блок для копіювання файлу посимвольно. Було створено програмний код для створення, ініціалізації двовимірного квадратного масиву, створення файлу та запис у файл початкових даних і значень всіх елементів. Також код створює додатковий файл з розширенням *bak, у який попередній файл. Створенні блок-схема до коду. Зроблено звіт з лабораторної роботи та вчасно надіслано викладачу на перевірку.
Антиботан аватар за замовчуванням

19.06.2023 18:06-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!