Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Файловий обмін рядками символів

 

Зчитування рядка символів з потоку введення виконує функція

 

char* fgets (char* str, int max, FILE* fp);

 

На відміну від gets (), дана функція має три параметри: перший - str вказує на масив символів, в який буде записано введений рядок; другий - max задає максимальну кількість символів (з нуль-символом включно), яку може містити зчитаний рядок; останній параметр - fp вказує на потік, з якого вводяться рядки.

У разі успішного виконання функція fgets () повертає адресу першого символа введеного рядка, тобто str, а в разі невдачі, зокрема, якщо досягнуто кінця файла, вказівник NULL.

Параметр str має вказувати на ділянку оперативної пам'яті, обсяг якої достатній для збереження зчитаного рядка. Параметр max обмежує кількість символів, які вводяться з потоку, тому розмір масиву str має бути не меншим за max. Дія функції така: з потоку fp у ділянку оперативної пам'яті, на яку вказує str, зчитується послідовність символів до символу нового рядка чи символу кінця файлу, але не більше, ніж mах-1 символів. Якщо в процесі введення зчитується символ '\n', то він заноситься у str, за ним записується '\0' і процес введення припиняється. У протилежному разі в str послідовно заноситься mах-1 символів потоку, за якими записується нуль-символ.


Запис заданого рядка в потік виведення здійснює функція

 

int fputs (char* str, FILE* fp);

яка повертає ненульове значення за умови успішного виконання та EOF у разі невдачі.

 

У процесі виконання fputs () послідовно передає у потік fp символи рядка str до '\0'. Сам нуль-символ у потік не записується і не перетворюється в інші символи Якщо в рядку зустрічається символ нового рядка, а потік виведення текстовий то замість символу “\n” у потік записується комбінація символів "\r\n". Для бінарних потоків жодні заміни символів не виконуються.

 

Наведемо приклад використання функцій введення/виведення символьних рядків для посторінкового роздруку заданого файлу. У програмі виконується підрахунок кількості рядків, виведених на екран. Після відтворення сторінки тексту встановленого розміру, читання з файлу затримується до натискання на довільну клавішу.

 


/* Посторінкове виведення текстового файла */

 

#include <stdio.h>

#include <conio.h> /* для функцій clrscr() і getch() */

#define LEN 81 /* розмірність буфера рядків тексту */

#define NROWS 22 /* розмір сторінки виведення */

int main ()

FILE * f ;

char buf[LEN];

char fname [] = "newtext.txt";

int n = 0 ;

if ( (f = fopen(fname, "rt")) =-= NULL)

{

printf("\n\t Файл %s не знайдено\n", fname);

return 0;

}

clrscr(); /* очищення екрана */

n = 0;

while (fgets (buf, LEN, f) != NULL)

{

fputs(buf, stdout); /* відображення зчитаного рядка */

 

if (++n % NROWS == 0) { /* заповнено сторінку */

printf("\n\t\t Page %d \n", NROWS);

getch (); /* затримка зображення */

}

}

printf("\n\t\t End of file. \n");

getch ();

fclose (f);

return 0;

}

 

У цій програмі розмірність рядка введення LEN дорівнює розміру екранного рядка -80 символів (плюс байт на ‘\0’), що полегшує підрахунок кількості висвітлених на екрані рядків.

 

Для виведення символьних рядків попередня програма використовує функцію

 

fputs(buf, stdout);

щоб відобразити на екрані текст так, як він записаний у файлі.

 

Якби виведення зчитаних з файлу рядків виконувалось функцією puts (buf), то після кожного рядка, що завершується символом “\n”, на екран додатково виводився б порожній рядок, оскільки puts () замінює кінцевий нуль-символ стрічки символом “\n”.



Читайте також:

  1. Автоматичний обмін даними.
  2. АДАПТАЦІЯ ОБМІНУ РЕЧОВИН ДО М'ЯЗОВОЇ ДІЯЛЬНОСТІ
  3. Американський стандартний код для обміну інформацією ASCII.
  4. Білковий обмін
  5. Білковий обмін: загальні відомості
  6. Буфер обміну — це тимчасове місце зберігання інформації, яку було скопійовано або переміщено з одного місця з метою використання в іншому.
  7. Вентиляція. Види вентиляції. Організація повітрообміну в приміщеннях, повітряний баланс, кратність повітрообміну
  8. Вібротеплообмінник для сипких середовищ
  9. Водний і мінеральний обмін
  10. Водний обмін у наземних тварин. Пристосування до життя в аридних умовах
  11. Вставка спеціальних символів.
  12. Газообмін у легенях і тканинах




Переглядів: 781

<== попередня сторінка | наступна сторінка ==>
Посимвольний обмін даними | Обмін блоками даних

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.004 сек.