- •Лабораторна робота №10
- •Порядок виконання роботи
- •1. Варіанти завдання
- •2. Теоретичні відомості
- •Int len (char e[ ])
- •Int len (char *s)
- •Void invert(char e[ ])
- •Void main( )
- •Int index(char [ ], char [ ]);
- •Int row(char c1[ ], char c2[ ])
- •Void cone(char *c1, char *c2)
- •Void substr(char *c1, char *c2, int n, int k)
- •3. Приклад розв’язання задачі на еом (варіант 3, завдання №7)
- •Void ChangeStr(char **s1,int m)
- •3.3 Результати роботи програми
- •Контрольні запитання
- •Лабораторна робота №11
- •Тема: Особливості роботи з одномірними динамічними масивами
- •Мета роботи: Отримання практичних навиків у роботі з одномірними динамічними масивами в мові c
- •Порядок виконання роботи
- •1. Варіанти завдання
- •2. Теоретичні відомості
- •Void main()
- •3. Приклад розв’язання задачі на еом (варіант №30)
- •3.2. Визначення змінних програми
- •3.3. Розробка тексту програми Крім файлів:
- •Int main(void) {
- •3.4. Налагодження програми
- •3.5. Результати роботи програми
- •Контрольні запитання
- •2. Теоретичні відомості
- •Int**array;
- •Void quart(int n, float * х)
- •Void main()
- •Void quart (int n, float X [ ])
- •3. Приклад розв’язання задачі на еом (варіант №30)
- •3.1. Розробка алгоритму вирішення
- •3.2. Представлення матриці в пам'яті
- •3.3. Визначення змінних програми (варіант 1)
- •Int size;
- •3.4. Розробка тексту програми (варіант 1)
- •Void fill(int *, int);
- •Void fill(int *a, int s) {
- •3.5. Відмінності для варіанту реалізації 3
- •Void fill(int far **, int);
- •Void fill(int far **a, int s) {
- •3.6. Налагодження програми
- •3.7. Результати роботи програми
- •Контрольні запитання
- •Лабораторна робота №13
- •Порядок виконання роботи
- •1. Варіанти завдання Завдання 1
- •2. Теоретичні відомості
- •Void main( )
- •Void main( )
- •Void main( )
- •3.Стандартні функції для роботи зі стрічками (бібліотека string.H)
- •4. Приклади використання стандартних функцій для роботи зі стрічками
- •Функція аналогічна до stpcpy, strcpy, strncat
- •Функція аналогічна до strcspn, strrchr, strspn, strstr
- •Int far _fstrcmp(const char far *s1, const char far *s2);
- •Функція аналогічна до stpcpy, strncpy
- •- Size _t maxlen - максимальне число символів, які копіюємо з вихідної стрічки в результуючу.
- •Приклад: /*strncpy/cpp*/
- •5. Приклад розв’язання задачі на еом (варіант 2)
- •5.1. Розробка алгоритму вирішення
- •5.2 Розробка тексту програми
- •Int main()
- •4.3 Результати роботи програми
- •Контрольні запитання
- •Лабораторна робота №14
- •Порядок виконання роботи
- •1. Варіанти завдання
- •2. Теоретичні відомості
- •Void main( )
- •Приклади розробки функцій для обробки текстової інформації
- •Int len (char e[ ])
- •Int len (char *s)
- •Void invert(char e[ ])
- •Void main( )
- •Int index(char [ ], char [ ]);
- •Int row(char c1[ ], char c2[ ])
- •Void cone(char *c1, char *c2)
- •Void substr(char *c1, char *c2, int n, int k)
- •3. Приклад розв’язання задачі на еом (завдання 2, варіант 7)
- •Void ChangeStr(char **s1,int m)
- •4.3 Результати роботи програми
- •Контрольні запитання
- •Лабораторна робота №15
- •Порядок виконання роботи
- •Варіанти завдання
- •Теоретичні відомості
- •Int pole2 ;
- •Приклад розв’язання задачі на еом (варіант №30)
- •Розробка алгоритму розв’язання задачі
- •Визначення змінних програми
- •Розробка тексту програми Текст програми починаємо з підключення файлу stdio.H.
- •Int main(void) {
- •If (!strcmp(mm[n].Name,"***")) break;
- •Контрольні запитання
- •Лабораторна робота №16
- •Порядок виконання роботи
- •1. Варіанти завдання
- •Теоретичні відомості Читання і запис текстових файлів
- •Int main ()
- •Приклад розв’язання задачі на еом (варіант 6)
- •Контрольні запитання
- •Лабораторна робота №17
- •Порядок виконання роботи
- •Варіанти завдання
- •Теоретичні відомості Читання і запис двійкових файлів
- •Відкриття двійкових фалів
- •Файли з послідовним доступом
- •Запис даних у файл c послідовним доступом
- •Int main()
- •If ( ! outf)
- •Int array[100];
- •Int main()
- •If ( ! inpf)
- •Int array[100];
- •Файли з довільним доступом
- •Int main()
- •If ( ! inpf)
- •Int main()
- •If ( ! outf)
- •Передача файлів між комп’ютерами.
- •Програмне підтвердження зв’язку
- •Перекачування файлу
- •Void send_file(fname)
- •Void wait(port)
- •Int port;
- •Прийом файлу
- •Void rec_file()
- •If(ferror(fp)) {
- •Void get_file_name(f)
- •Приклад розв’язання задачі на еом (варіант 10)
- •Контрольні питання
- •Література
-
Теоретичні відомості Читання і запис двійкових файлів
Текстові файли, незважаючи на своє широке поширення, є тільки одним з видів файлів, які можна зберігати на диску. Двійкові файли знайшли більш широке застосування в професійних програмах, тому що :
-
одна з переваг збереження даних у двійкових форматах швидкість (тобто немає необхідності перетворювати дані при передачі з диска в пам'ять і навпаки);
-
інша перевага – пам'ять. Так, наприклад, змінна типу double займає 4 байти, а в текстовій формі набагато більше. Звичайно двійкові файли по розміру менше текстових і в більшості випадків програми обробляють їх швидше, ніж текстові.
Мова С дозволяє досить легко працювати з двійковими файлами. Методи обробки майже такі ж, як для текстових файлів, і вони працюють як у DOS, так і в Windows, при цьому програми виконують читання і запис наборів байтів.
Відкриття двійкових фалів
Для відкриття двійкових файлів необхідно:
-
визначити файлову змінну File *fp;
-
безпосереднє відкриття виконується функцією fopen() по всіх режимах якої додається буква b ”rb”, “wb”, “ab”, “r+b”, “w+b”, “a+b”.
Наприклад, оператор fp = fopen(“test.txt”,”r+b”); - відкриває файл для читання і запису в двійковому режимі. При відкритті можливі помилки (тобто програмні переривання), які можна передбачити за допомогою фрагмента програми:
File *out;
out = fopen (filename, “wb”);
if ( ! out)
{
puts (“Саn't create file”);
exit (1);
}
Існує два способи читання і запису двійкових файлів:
- послідовний;
- прямий (довільний);
Файли з послідовним доступом
Послідовна обробка корисна для швидкого запам'ятовування значень у файлах і для звертання з файловими даними як з потоком байтів (аналогічно запису на магнітну стрічку).
Запис даних у файл c послідовним доступом
Приклад 1. Написати програму запису даних у послідовний файл.
#include <stdio.h>
#include <stdlib.h>
Int main()
{
File *outf;
int i;
outf = fopen (“int.dat”, “wb”);
If ( ! outf)
{
puts (“Can’t create file”);
exit (1);
}
puts (“Zapis into file”);
for (i=0; i<100; i++)
fwrite(&i, sizeof(int),1, outf);
fclose (outf);
return 0;
}
Для запису даних у двійковий файл використовується функція fwrite(), що містить чотири параметри:
-
Адреса змінної чи масиву змінних, з якого байти копіюються на диск;
-
Число байтів в одній змінній;
-
Число записуваних елементів: 1 для одного значення, або інше позитивне ціле число елементів масиву що записуються;
-
Змінна файлового типу File *, відкритого в двійковому режимі.
Для запису у відкритий файл на диску масив 100 значень можна скористатися фрагментом програми:
Int array[100];
fwrite(&array, sizeof(int),100,outf);
Читання даних з файлу послідовного доступу за допомогою функції fread().
Приклад 2. Написати програму для послідовного читання двійкових значень з файлу int.dat.
#include <stdio.h>
#include <stdlib.h>
Int main()
{
File *inpf;
int I, val;
inpf = fopen (“int.dat”, “rb”);
If ( ! inpf)
{
puts (“Can’t create file”);
exit (1);
}
for (i=0; i<100; i++)
{
fread(&val, sizeof(int),1, inpf);
printf (“%d”,val);
}
return 0;
}
Функція fread() вимагає тих же аргументів, що і функція fwrite(). Перший аргумент функції є адресою приймача, у який ця функція повинна скопіювати байти з диска. Тому розмір цієї змінної достатній для запам'ятовування необхідної кількості байтів.
Для вивантаження всього масиву зі 100 цілочисельних значень з диска у файл можна використовувати фрагмент програми