КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Приклад. Обробка бінарних файлів
Обробка бінарних файлів Обробка текстових файлів Типовий алгоритм обробки текстових файлів: 1. Відкриття файлу: fopen(); 2. Читання або запис рядків у файл: fgets(), fputs(); 3. Закриття файлу: fclose().
fopen() FILE *fopen(const char *ім’я_файлу, const char *режим); Режими відкриття файлу наведені у таблиці.
fopen() повертає вказівник на файл, або у випадку помилки – пустий вказівник (NULL), наприклад: FILE *fp; fp = fopen(“test”, “r”); if (fp == NULL) printf(“Помилка при відкриті файлу.”);
fclose() int fclose(FILE *уф); Закриває файл.
fgets() char *fgets(char *str, int довжина, FILE *уф); Читає з потоку *уф символи та розміщує їх у рядку str. Символи читаються до досягнення одної з ознак: – новий рядок; – кінець файлу; – вказана довжина. fputs() int fputs(const char *str, FILE *уф); Записує у потік *уф зміст рядку str. feof() int feof(FILE *уф); Якщо вказівник поточної позиції файлу встановлений у кінець, повертає не нульове значення, нуль – в противному випадку.
Приклад 1. Виведення змісту текстового файлу на екран. FILE *fp; char str[200]; fp = fopen(“test”, “r”); if (fp == NULL) { printf(“Error”); exit(1); };
while (feof(fp) == 0) { fgets(str, 199, fp); puts(str); }
fclose(fp);
Типовий алгоритм обробки бінарних файлів: 1. Відкриття файлу: fopen(); 2. Читання або запис даних у файл: fread(), fwrite(); 3. Зміна позиції вказівника поточної позиції файлу: fseek(), ftell(), rewind(); 4. Закриття файлу: fclose(). Функції fopen() та fclose() були описані вище. fread() size_t fread(void *buffer, size_t кільк_байт, Дозволяє зчитувати з файлу блоки даних будь-якого типу. buffer – вказівник на область пам’яті, куди зчитуються дані кільк_байт – розмір елементу даних у байтах; кількість – кількість елементів, яку треба зчитати. Кожний елемент займає кільк_байт байтів. Функція повертає кількість зчитаних елементів. Якщо досягнуто кінець файлу, це значення може бути меншим ніж кількість. Розмір елементу даних у байтах визначається за допомогою операції sizeof. Для визначення розмір типу, його ім’я необхідно вказувати у дужках. Допускається також вказування у дужках імені змінної. int sz, i; char ch; sz = sizeof i; /* sz = 2 bytes */ sz = sizeof(ch); /* sz = 1 byte */ sz = sizeof(float); /* sz = 4 bytes */
Приклад 2. У файлі data.dat зберігаються цілі числа. Зчитати та вивести на екран усі числа, більші 10. #include<stdio.h>
void main() { FILE *fp; int i, sz = sizeof(int);
fp = fopen("data.dat", "rb"); if (fp == NULL) { puts("Cannot open file"); exit(1); }
while (fread(&i, sz, 1, fp) == 1) { if(i > 10) printf("%d\n", i); }
fclose(fp); }
fwrite() size_t fwrite(void *buffer, size_t кільк_байт, Дозволяє записувати у файли блоки даних будь-якого типу. *buffer – вказівник на область пам’яті, куди зчитуються дані з файлу, кільк_байт – розмір елементу даних у байтах, кількість – кількість елементів, яку треба зчитати. Приклад 3. Записати 10 випадкових цілих чисел до файлу data.dat. #include<stdio.h> #include<stdlib.h>
void main() { FILE *fp; int i, n, sz = sizeof(int);
fp = fopen("data.dat", "wb"); if (fp == NULL) { puts("Cannot create file"); exit(1); }
srand(100); for(i = 0; i < 10; i++){ n = rand(); fwrite(&n, sz, 1, fp); }
fclose(fp); }
fseek() int fseek(FILE * уф, long int кільк_байт, int початок_відліку);Встановлює вказівник поточної позиції файлу. Читання або запис даних у файл виконується на поточної позиції. Після файлової операції вказівник переміщується на наступну позицію. кільк_байт – кількість байтів від початку відліку, що визначає нову позицію вказівника; початок_відліку – визначає позицію відліку: Функція повертає нуль, якщо виконана успішно, або не нульове значення у випадку помилки.
ftell() long int ftell(FILE *уф); Повертає позицію вказівника поточної позиції файлу. rewind() void rewind(FILE *уф); Переміщує вказівник поточної позиції файлу на початок файлу.
Дата добавления: 2014-01-04; Просмотров: 497; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |