22939
ВВЕДЕННЯ / ВИВЕДЕННЯ
Лекция
Информатика, кибернетика и программирование
Перед тим як розпочати роботу з потоком його необхідно відкрити за допомогою функції FILE fopenchar filename char mode. Функція формує потік з даним файлом і повертає результат у вигляді покажчика на обєкт типу FILE який містить всю інформацію необхідну для роботи з потоком адресу та розмір буфера індексзсув поточної позиції в буфері режим оборобки інформації і т. FILE fp; fp=fopenfile1.txt a; відкриття файлу file1.
Русский
2013-08-04
48 KB
1 чел.
ВВЕДЕННЯ / ВИВЕДЕННЯ
Збереження та обробка інформації на зовнішніх пристроях здійснюється за допомогою файлових типів даних. Файли як тип даних являють собою послідовності однотипних комполнентів з певними засобами до їх доступу та обробки. У мові Сі всі файли розглядаються як послідовності символів (байтів). Бібліотеки Сі підтримують три рівні обробки таких файлів: потоковий В/В, В/В нижнього рівня та В/В для консолі та портів. Ми розглянемо тільки потоковий рівень.
ПОТОКОВИЙ В/В
На даному рівні обмін даними між ОП та файлом на ЗП здійснюється побайтно фіксованими порціями блоками, які формуються і зберігаються в спеціальних системних полях ОП буферах. При читанні з файлу дані спочатку блоками заносяться в буфер, а потім вже з нього за допомогою функцій В/В передаються програмі. При запис в файл функції В/В попередньо заносять дані (побайтно) в буфер і при його заповненні весь блок разом передається в файл на ЗП.
Потік це певний файл разом з засобами буферизації. При роботі з потоком можливі наступні дії:
Перед тим як розпочати роботу з потоком його необхідно відкрити за допомогою функції
FILE *fopen(char * filename, char *mode).
Функція формує потік з даним файлом і повертає результат у вигляді покажчика на обєкт типу FILE, який містить всю інформацію необхідну для роботи з потоком (адресу та розмір буфера, індекс(зсув) поточної позиції в буфері , режим оборобки інформації і т.д.). Потік може відкриватись в текстовому або бінарному режимах , для запису, читання або для запису і читання інформаціїї. Режим задається параметром mode.
В текстовому режимі (він встановлюється за замовчуванням) при читанні пара символів CR(=13), LF(=10=\n) замінюється на один LF, а при записі відбувається обернена заміна кожного символу LF на пару символів CR, LF. Ознакою бінарного режиму є буква b. Нпр.,
“w+b” файл відкривається для модифікаціїї, при цьому він попередньо спустошується;
“r” - тільки для читання;
“w” - тільки для запису (в кінець файлу), при цьому файл попередньо спустошується;
“a” - для дозапису в кінець файлу.
“r+” для модифікації існуючого файлу читання та запису ;
“a+” для модифікації і дозапису в кінець файлу.
Модифікація файлу означає можливість читати та писати в один і той же файл. При переходах від операцій читання до записів та навпаки повинно бути звернення до функцій: fflush(…) (=примусовий запис буфера в файл) або fseek(…) (=призначає нову поточну позицію в буфері) .
Нпр. FILE *fp;
fp=fopen(“file1.txt”, “a+”); /* відкриття файлу file1.txt для модифікації і доповнення */
При відкритті файлу можливі помилкові ситуації. Тоді fopen повертає NULL:
if (( fp=fopen(“file1.txt”, “a+”)==NULL)
{perror(“помилка при відкритті файлу file1.tx); exit(0);}
Коли Сі-програма розпочинає роботу автоматично для неї відкриваються три стандартних потоки: stdin (для клавіатури ), stdout (для екрану) і stderr (для виведення повідомлень про помилки на екран ).
Функція int fclose(FILE *fp) вивантажує буфер в файл, звільнює всі автоматично залучені для даного потоку буфери і перериває зв'язок з файлом. Повертає EOF у випадку помилковою ситуації і 0 у супротивному.
int getc(FILE *fp) повертає наступний символ з потоку або ЕОF, якщо файл закінчився або виникла помилкова ситуація .
int putc( int c, FILE *fp) - записує символ с в . Повертає с або ЕОF у випадку помилки.
int fgets (char *s, int n, FILE *fp) читає n-1 символ в рядок s . При появі символу \n достроково закінчує читання. При цьому \n також записується в s. В кінці рядка записує \0. Повертає значення s або NULL у разі закінчення файлу або виникнення помилкової ситуації.
int fputs (char *s, FILE *fp) - записує в потік рядок s . Повертає EOF у випадку виникнення помилкової ситуації.
int fseek (FILE *fp, long offset, int pt) зсуває буферний покажчик в файлі на offset байтів відносно:
початку файлу для pt=0;
кінця файлу - для pt=2;
поточної позиції - для pt=1.
Наступна операція В/В буде виконуватись з позиції, на яку вказує оновлений буфернимй покажчик. Пи помилкових ситуаціях функція повертає -1.
fseek (fp, oL, 2) буферний покажчик в кінці файлу.
fseek (fp, oL, 0) - буферний покажчик на початку файлу.
long ftell (FILE *fp) повертає поточне значення індексу буфера.
Прикл.
/* копіювання файлів в стандартний потік stdout ;
імена файлів задаються в командному рядку */
#include <stdio.h>
void filecopy(FILE *);
main (int argc, char *argv[])
{ FILE *fp;
if (argc==1) /* аргументів немає
копіюється стандартний потік stdin */
filecopy(stdin)
else while (--argc>0)
if (( fp=fopen(*++argv, “r”)==NULL)
{printf(“помилка при відкритті файлу:%s, *argv); break;}
else { filecopy(fp); fclose(fp);}
}
void filecopy(FILE * fp)
/* копіювання файлу стандартний потік stdout */
{ int c;
while ((c=getc(fp)!=EOF)
putc(c,stdout);
}
/* modif модифікація файлу. Відбувається пошук рядків з префіксом # і копіювання їх в кінці файлу без цього префіксу */
#define MAXLINE 1024
void modif (char *filename)
{ long begoff , endoff;
char line[MAXLINE];
FILE *fp;
if (( fp=fopen(filename, “w+”)==NULL) return 0;
if ( fseek(fp,0L,2)== -1) return 0;
endoff=ftell(fp);
if ( fseek(fp,0L,0)== -1) return 0;
for (begoff=0; begoff< endoff; begoff+=strlen(line) )
{ fgets(line, MAXLINE, fp);
if (line[0]==#)
{ if (fseek(fp, 0L,2)== -1) return 0;
fputs(line+1, fp);
}
if (fseek(fp, begoff + strlen(line),0)== -1) return 0;
}
fclose(fp);
}
А также другие работы, которые могут Вас заинтересовать | |||
1120. | Принципы использование тиристоров | 108 KB | |
Принцип действия тиристора. Полупроводниковые источники света. Светоизлучающие диоды. Механические колебания диодов кристаллической решетки. Характеристики СИД. Полупроводниковый лазер. Система зеркал – оптический резистор. | |||
1121. | Понятие микросхем. Основные сведение микроэлектроники | 244.5 KB | |
Микросхема в корпусе ДИП. Полупроводниковые интегральные микросхемы. Структура интегрального биполярного транзистора. Интегральные полевые транзисторы. Интегральные конденсаторы. | |||
1122. | Архитектура вычислительных систем | 2.32 MB | |
Ознакомление с принципом действия, машинными циклами и тактами микропроцессора КР580: изучение правил записи машинных программ(в машинных кодах и мнемокодах), исследование выполнения команд пересылки байта. | |||
1123. | Стальной каркас одноэтажного производственного здания | 756 KB | |
Расстояние от головки кранового рельса до низа несущих конструкций покрытия. Горизонтальные размеры поперечной рамы. Постоянная нагрузка от веса продольной стены и остекления. Постоянные нагрузки от подкрановой конструкции. Величина продольного усилия от постоянной нагрузки в отдельных сечениях колонны. Расчет на вертикальную нагрузку от мостовых кранов. | |||
1124. | Залізничний вагонний рухомий склад | 311.5 KB | |
Основні види та технічні параметри залізничного вагонного рухомого складу. Технічна характеристика платформи моделі 13-2114. Перевезення важковагових, довгомірних, громіздких вантажів. | |||
1125. | Основы лабораторных исследований по информатике | 1.04 MB | |
Составление, ввод, трансляция и выполнение программ линейной и разветвляющейся структуры. Составление, ввод, отладка и выполнение программ, использующих одномерные массивы. Программирование алгоритмов сортировки и поиска. | |||
1126. | Корреляционный и регрессионный анализ | 955 KB | |
Корреляционный анализ. Множественный коэффициент корреляции. Классификатор на основе ядерных оценок. Регрессионный анализ. Коэффициент ошибок (на обучающей выборке). Применение QDA. | |||
1127. | Термическая обработка углеродистой стали на мелкое зерно | 110.5 KB | |
Изучить влияние отжига и нормализации на величину зерна в стали. Освоить методику определения величины аустенитного зерна по ГОСТ 5639-82. Роль термической обработки в процессах формирования зерна в сталях. | |||
1128. | Термическая обработка углеродистой стали | 272.5 KB | |
Влияние термической обработки на механические свойства (твердость) углеродистой стали. Назначения режима термической обработки при проведении закалки, нормализации, отжига и отпуска углеродистой. | |||