22939

ВВЕДЕННЯ / ВИВЕДЕННЯ

Лекция

Информатика, кибернетика и программирование

Перед тим як розпочати роботу з потоком його необхідно відкрити за допомогою функції FILE fopenchar filename char mode. Функція формує потік з даним файлом і повертає результат у вигляді покажчика на обєкт типу FILE який містить всю інформацію необхідну для роботи з потоком адресу та розмір буфера індексзсув поточної позиції в буфері режим оборобки інформації і т. FILE fp; fp=fopenfile1.txt a; відкриття файлу file1.

Русский

2013-08-04

48 KB

1 чел.

ВВЕДЕННЯ / ВИВЕДЕННЯ

Збереження та обробка інформації на зовнішніх пристроях  здійснюється за допомогою файлових  типів даних. Файли  як тип даних являють собою послідовності однотипних комполнентів з певними засобами до їх доступу та обробки. У мові Сі всі файли розглядаються як послідовності символів (байтів).  Бібліотеки Сі підтримують три рівні  обробки таких файлів: потоковий В/В, В/В нижнього рівня та В/В для консолі та портів. Ми розглянемо тільки потоковий рівень.

ПОТОКОВИЙ В/В

На даному рівні обмін даними між ОП та файлом на ЗП здійснюється побайтно фіксованими порціями – блоками, які формуються і зберігаються в спеціальних системних полях ОП – буферах. При читанні з файлу дані спочатку блоками заносяться в буфер, а потім вже з нього за допомогою функцій В/В передаються  програмі. При запис в файл  функції В/В попередньо заносять дані (побайтно)   в буфер і при його заповненні  весь блок разом передається в файл на ЗП.

Потік – це певний файл разом з засобами буферизації. При роботі з потоком можливі наступні дії:

  1.  відкриття та закриття потоку (функції  fopen(…),  fclose(..));
  2.  В/В : символів, рядків, форматованих даних, порцій даних довільної довжини (функції  getc(…), putc(…), fgets(…), fputs(…), fprintf(…), fscanf(…));
  3.  аналіз помилок операцій В/В;
  4.  керування буферизацією потоку (розмір буферу і т.д.);
  5.  керування буферним покажчиком (індексом потоку) (=поточною позицією в потоці).

Перед тим як розпочати роботу з потоком його необхідно відкрити за допомогою функції

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);    

                 

}


 

А также другие работы, которые могут Вас заинтересовать

48006. ТЕОРІЯ ЛІТЕРАТУРИ ЯК НАУКА 388 KB
  Теорія літератури як наука. Теорія літератури серед інших літературознавчих дисциплін. Предмет теорії літератури як науки.
48007. СТАНОВЛЕННЯ ФІЛОСОФІЇ ЯК СИСТЕМИ ЗНАНЬ І СВІТОГЛЯДУ 1.26 MB
  Філософія і світогляд. Філософія як ядро філософського типу світогляду. Філософія історії. Філософія.
48008. Живопис. Курс лекцій 929 KB
  Вивчаючи натуру закони живопису студент розвиває почуття ритму як лінійного так і ритму основних мас тону і кольору вирішує складні пластичні просторові кольоросвітлові завдання. На основі засвоєння знань законів живопису оволодіння культурою використання кольору і форми студент набуває навичок що дають можливість кваліфіковано вирішувати творчі завдання. Використання контрасту та нюансу кольору у натюрморті 2729 Тема 5. Національні особливості використання кольору в живописних роботах 2935 Тема 6.
48009. Житлове право 251.5 KB
  Так громадянин має право на приватизацію державного житлового фонду але він може отримати його у приватну власність якщо він є наймачем державного комунального житла; наявне законодавство що регулює механізм приватизації житлового фонду; належна йому квартира будинок знаходиться у державному житловому фонді; волевиявлення проявляється у формі заяви та надання інших необхідних документів про склад сім'ї пільги паспорт тощо. Громадяни самостійно здійснюють право на одержання жилого приміщення в будинках державного і комунального...
48010. ОБЛІК ЗОВНІШНЬОЕКОНОМІЧНОЇ ДІЯЛЬНОСТІ 2.51 MB
  Орієнтація нашої держави на ринкову економіку необхідність підготовки ґрунту для вступу України до Світової організації торгівлі постійне залучення іноземних інвесторів та розвиток комерційних відносин між вітчизняними й іноземними підприємствами доводить що облік зовнішньоекономічної діяльності підприємств є досить актуальною темою для дослідження. Зовнішньоекономічна діяльність це діяльність суб‘єктів господарської діяльності України та іноземних суб‘єктів господарської діяльності яка побудована на взаємовідносинах між ними є...
48011. АНАЛІЗ ГОСПОДАРСЬКОЇ ДІЯЛЬНОСТІ ПІДПРИЄМСТВА 1.79 MB
  Система показників комплексного АГД Показники вихідних умов діяльності підприємства наявність необхідних матеріальних і фінансових ресурсів для нормального функціонування підприємства і виконання виробничої програми організаційнотехнічний рівень підприємства рівень маркетингової діяльності Показники використання засобів виробництва фондорентабельність фондовіддача фондомісткість середньорічна вартість основних засобів амортизація Показники використання предметів праці матеріаломісткість матеріаловіддача вартість предметів труда за аналізує...
48012. Координати у просторі 3.8 MB
  Закони додавання векторів Переставний закон: Сполучний закон: Правило паралелограма на площині Правило паралелепіпеда у просторі Віднімання векторів Різницею двох векторів називається такий вектор сума якого з другим вектором дорівнює першому. Множення вектора на число Множення вектора на додатне число Добутком ненульового вектора на число k 0 називається такий вектор співнапрямлений даному довжина якого дорівнює довжині даного вектора помноженій на k. Множення вектора на нуль...
48013. Економіка праці та соціально-трудові відносини, конспект лекцій 2.29 MB
  Економіка праці: Конспект лекцій. Висвітлено загальні теоретичні поняття з дисципліни Економіка праці та соціальнотрудові відносини: розглянуто основні теоретичні й практичні аспекти функціонування ринку праці проблеми зайнятості населення та її регулювання; розкрито питання еволюції концепцій доходів населення соціальної політики і соціального партнерства; висвітлено економічну сутність продуктивності праці методи її вимірювання; особлива увага приділена питанням організації оплати праці та її удосконаленню в умовах становлення...
48014. Форматирование HTML-документа 97.5 KB
  P P Элемент абзаца Вместе с элементом P можно использовать атрибут выравнивания lign: lign= left выравнивание по левому краю;lign= center выравнивание по центру;lign= right выравнивание по правому краю;lign= justify выравнивание по ширине; BR Элемент обеспечивающий принудительный переход на новую строку. NORB norb Этот элемент по своему действию является прямой противоположностью предыдущему. Этот элемент требует наличия конечного тега. CENTER center Элемент для центрирования текста а точнее любого содержимого рисунка таблицы...