- •Мета Виконання лабораторних робіт
- •Порядок виконання лабораторних робіт
- •Вимоги до оформлення звітів про виконання лабораторних робіт
- •Лабораторна робота № 1
- •Порядок виконання лабораторної роботи:
- •Код програми мовою с
- •Лабораторна робота № 2 Дослідження роботи стандартних функцій вводу-виводу
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Код програми мовою с
- •Розробка тестового прикладу
- •Результати виконання програми
- •Контрольні запитання
- •Лабораторна робота № 3 Дослідження виконання операції та обчислення виразів мови c. Перетворення та приведення типів даних
- •Варіанти індивідуальних завдань.
- •Короткі теоретичні відомості
- •Пріоритети операцій мови Сі
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 4 Програмування задач на розгалуження за допомогою множини операторів мови с.
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості.
- •If (логічний вираз) оператор1; else оператор2;
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •К од програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 5 Програмування задач з використанням циклічних алгоритмів за допомогою множини операторів мови с.
- •Варіанти індивідуальних завдань.
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Вивід на екран нуля Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитаня
- •Лабораторна робота № 6 Розробка програм з використанням функцій.
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання:
- •Лабораторна робота № 7 Програмування задач з використанням масивів даних.
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •К од програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 8 Опрацювання рядків тексту.
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 9 Використання вказівників для роботи з масивами даних.
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 10 Програмування задач на використання структур даних.
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 11 Динамічні структури даних
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 12 Робота з дисковими файлами
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Література для самостійної роботи
- •Додаток а
- •Додаток б
- •Додаток в Функції стандартної бібліотеки для перетворення
- •Додаток г Функції стандартної бібліотеки роботи
- •Додаток д
- •Додаток е
Додаток д
Функції стандартної бібліотеки для роботи з файлами (<stdio.h>)
Назва |
Прототип |
Призначення |
clearerr |
void clearerr(FILE *stream); |
Скидає ознаку помилки та ознаку кінця файлу для заданого потоку. Повинна бути викликана для продовження виконання операцій з потоком після виникнення помилки. Замість clearer може бути викликана функція rewind. |
fclose |
int fclose(FILE *stream); |
Закриває потік, пов’язаний з відкритим функцією fopen файлом stream. Перед закриттям потоків дані записуються з буфера у файл. Пам’ять відведена під буфер автоматично вивільняється. |
fflush |
int fflush(FILE *stream); |
Вивантажує вміст буфера, пов’язаного з потоком stream, у відповідний файл. Потік залишається відкритим. Якщо файл відкритий для читання, то вміст буфера очищується. |
flushall |
int flushall(void); |
Вивантажує усі буфери потоків у відповідні файли. Потоки не закриваються. |
fgetc |
int fgetc(FILE *stream); |
Читає один символ з потоку stream та переміщує вказівник на наступний символ. Повертає введений символ або EOF, якщо помилка або кінець файлу. |
fgetpos |
int fgetpos(FILE *stream, fpos_t *pos); |
Повертає поточне значення вказівника позиції запису-читання файлу stream. Розміщує значення вказівника за адресою pos. При нормальному завершенні функція fgetpos повертає 0, інакше – відмінне від нуля значення. |
fgets |
char * fgets(char *s, int n, FILE *stream); |
Читає рядок з потоку stream та розміщує його за адресою s. Символи читаються до символа ‘\n’, який включається у рядок, або до кінця потоку, або поки не буде прочитано n-1 символ. У кінець рядка автоматично додається символ ‘\0’. Повертає адресу рядка, або NULL, якщо помилка, або досягнуто кінець файла. |
fopen |
FILE * fopen(const char * path, const char *mode); |
Відкриває файл з іменем path та пов’язує його з потоком для виконання буферизованого введення-виведення. Аргумент mode задає спосіб доступу та режим відкриття файлу. Спосіб доступу може приймати такі значення: “r” - для читання (файл повинен існувати); “w”- для запису (якщо файл існує, то його вміст витирається); “a” – для запису в кінець файла (якщо файл не існує, то він буде створений); “r+”- для читання та запису (файл повинен існувати); “w+” - для запису та читання (якщо файл існує, то його вміст витирається); “a+” – для читання та поповнення (якщо файл не існує, то він буде створений). Режим відкриття може приймати такі значення: ‘t’ – текстовий режим; ‘b’ – двійковий режим. Функція повертає вказівник на файлову структуру FILE. |
fprintf |
int fprintf(FILE *stream, const char *format, ...); |
Форматований запис даних у потік stream. Специфікації форматів є такі ж, як для функції printf. Повертає кількість записаних символів. Якщо помилка, то повертає ознаку EOF. |
fputc |
int fputc(int c, FILE *stream); |
Записує символ c у поточну позицію потоку stream. Повертає записаний символ, або ознаку EOF, якщо помилка. |
fputs |
int fputs(const char *s, FILE * stream); |
Записує рядок s у потік stream. Кінцевий символ ‘\0’ не записується. Повертає останній записаний символ, або значення 0, якщо рядок порожній, або EOF, якщо помилка. |
fread |
size_t fread(void *ptr, size_t size, size_t n, FILE *stream); |
Читає n елементів довжиною size байтів кожен з потоку stream та розміщує їх у буфер ptr. Форматних перетворень не відбувається. Символи ‘\n’ спеціально не опрацьовуються. Повертає число прочитаних елементів, яке може бути меншим від n, якщо сталася помилка або досягнуто кінець файлу. |
freopen |
FILE * freopen(const char * path, const char *mode, FILE * stream); |
Закриває файл, пов’язаний з потоком stream, і перепризначає цей потік на файл, визначений аргументом path. Новий файл відкривається у режимі mode. Функція freopen в основному використовується, щоб зв’язати стандартні потоки stdin, stdout, stderr, stdprn, stdaux з файлами користувача. |
fscanf |
int fscanf(FILE *stream, const char *format, ...); |
Читає дані з потоку stream, виконує форматні перетворення і записує отримані значення у змінні, задані аргументами-вказівниками. Специфікації форматів відповідають функції scanf. Повертає кількість успішно прочитаних та перетворених елементів введення, або ознаку EOF, якщо досягнуто кінець файлу. |
fseek |
int fseek(FILE *stream, long offset, int whence); |
Переміщує вказівник позиції читання-запису потоку stream на offset байтів відносно початку відліку whence. Аргумент whence може приймати такі значення: SEEK_SET (або 0) – початок файлу; SEEK_CUR (або 1) – поточна позиція файлу; SEEK_END (або 2) – кінець файлу. Вказівник можна перемістити за кінець файлу, але не можна встановити перед початком файлу. Повертає 0, якщо встановлення вказівника пройшло успішно, і ненульове значення при помилці. |
fsetpos |
int fsetpos(FILE *stream, const fpos_t *pos); |
Встановлює вказівник позиції запису-читання потоку stream на значення у байтах, вказане у змінній за адресою pos. Повертає 0, якщо встановлення вказівника пройшло успішно, і ненульове значення при помилці. |
ftell |
long ftell(FILE *stream); |
Повертає поточну позицію вказівника запису-читання файла, пов’язаного з потоком stream. |
fwrite |
size_t fwrite(const void *ptr, size_t size, size_t n, FILE * stream); |
Записує n елементів довжиною size байтів кожен з буфера ptr у потік stream. Форматних перетворень не відбувається. Символи ‘\n’ спеціально не опрацьовуються. Повертає число записаних елементів, яке може бути меншим від n, якщо сталася помилка. |
remove |
int remove(const char *path); |
Макрос, який витирає закритий файл path. Не може витерти файл з атрибутом “тільки для читання”. Повертає 0 при успішному витиранні. Значення –1 сигналізує про помилку, причина якої міститься у змінній errno: EACCES – ім’я визначає файл, з атрибутом для читання; ENOENT – файл або шлях не знайдені. |
rename |
int rename(const char * oldname, const char * newname); |
Перейменовує файл або каталог. Ім’я oldname заміняється на newname. Можна перемістити файл з одного каталога в інший, але не можна змінити ім’я логічного диску. Каталоги не можуть бути переміщені. Повертає 0 при успішній операції. Відмінне від нуля значення свідчить про помилку. Причина помилки міститься у змінній errno. |
rewind |
void rewind(FILE *stream); |
Переміщує вказівник позиції запису-читання на початок відкритого файла. |
setbuf |
void setbuf(FILE *stream, char *buf); |
Встановлює новий буфер buf для відкритого потоку stream. Якщо buff=NULL, то буферизація відключається. Функція повинна бути викликана зразу за функціями fopen або fseek. |
setvbuf |
int setvbuf(FILE *stream, char * buf, int type, size_t size); |
Керує буферизацією та розміром буфера файла, зв’язаного з потоком stream. Адреса буфера задається параметром buf. Якщо buf=NULL, то потік не буферизується. Для буферизованого потоку type може приймати такі значення: _IOFBF – буферизація на повний об’єм буфера; _IOLBF – порядкова буферизація – поява символа ‘\n’ призводить до скидання буфера при записі у файл та зупинці дозапису у буфер при читанні з файлу; _IONBF – файл не буферизується. Повертає 0 при успішній операції та відмінне від 0 значення, якщо тип або розмір буфера задані некоректно. |
tmpfile |
FILE * tmpfile(void); |
Створює та відкриває (у режимі w+) новий тимчасовий файл та повертає вказівник на потік для цього файлу. Якщо файл не може бути відкритий, то повертає NULL. Створений тимчасовий файл знищується при нормальному завершенні програми, або викликом функції rmtmp, при умові, що робочий каталог не було змінено. |
tmpnam |
char * tmpnam(char *s); |
Створює унікальне ім’я файла та розміщує його за адресою s. Якщо s=NULL, то ім’я розміщується у внутрішньому статичному об’єкті. Функція повертає вказівник на згенероване ім’я. |
vfprintf |
int vfprintf(FILE *stream, const char *format, void * arglist); |
Здійснює форматоване виведення даних у потік stream. Дані задаються у масиві, вказівник на який визначається параметром arglist. |
vfscanf |
int vfscanf(FILE *stream, const char *format, void * arglist); |
Здійснює форматоване введення даних з потоку stream. Адреси змінних задаються масивом, вказівник на який визначається параметром arglist. |
unlink |
int unlink(const char *path); |
Витирає закритий файл, заданий іменем path. Не може витерти файл з атрибутом “тільки для читання”. Повертає 0 при успішному витиранні. Значення –1 сигналізує про помилку, причина якої міститься у змінній errno: EACCES – ім’я визначає файл, з атрибутом для читання; ENOENT – файл або шлях не знайдені. |
getc |
int getc(FILE *fp); |
Водить символ із потоку fp. |
ungetc |
int ungetc(int c, FILE *stream) |
Повертає символ c у потік fp. Символ повинен бути прочитаний, інакше тільки один символ може бути повернутий. |
putc |
int putc(const int c, FILE *fp); |
Запис символа c у потік fp. |
feof |
int feof(FILE *fp); |
Повертає відмінне від нуля значення, якщо досягнуто кінець файлу. |
ferror |
int ferror(FILE *fp); |
Повертає відмінне від нуля значення, якщо виникла помилка роботи з файлом. |
fcloseall |
int fcloseall(void); |
Закриває усі потоки, пов’язані з відкритими файлами, за виключенням стандартних: stdin, stdout, stderr, stdprn, stdaux. Дані з буферів автоматично переписуються у файли. Пам’ять, відведена під буфери, автоматично вивільняється. |