Описује како Ц програматор креира, отвара и затвара текстуалну или бинарну датотеку.
Датотека, значи низ бајтова, било да је текстуална или бинарна датотека, језик Ц, не само да обезбеђује приступ функцијама највишег нивоа, већ такође обезбеђује основни (ОС) позив за обраду датотека на уређају за складиштење . Ово поглавље ће објаснити важне позиве у управљању документима.
опен-филе
Обично користећи функцију фопен () за креирање нове датотеке или отварање постојеће датотеке, овај позив иницијализује објекат типа ФИЛЕ који садржи све потребне информације за контролу тока. Ево прототипа позива ове функције:
ФИЛЕ *фопен ( цонст цхар * име датотеке, цонст цхар * режим);
Овде име датотеке је стринг за именовање датотеке, вредност режима приступа може бити једна од следећих вредности:
образац | опис |
r | Отворите постојећу текстуалну датотеку која омогућава њено читање. |
w | Отворите текстуалну датотеку која омогућава писање у датотеку. Ако датотека не постоји, креира се нова датотека. Овде ваш програм уписује садржај са почетка датотеке. Ако датотека постоји, биће скраћена на нулту дужину и поново написана. |
a | Отворите текстуалну датотеку и пишите у датотеку у режиму додавања. Ако датотека не постоји, креира се нова датотека. Овде ваш програм додаје садржај датотекама које већ имате. |
r+ | Отворите текстуалну датотеку која вам омогућава да читате и пишете датотеку. |
w+ | Отворите текстуалну датотеку која вам омогућава да читате и пишете датотеку. Ако датотека већ постоји, датотека се скраћује на нулту дужину, а ако датотека не постоји, креира се нова датотека. |
a+ | Отворите текстуалну датотеку која вам омогућава да читате и пишете датотеку. Ако датотека не постоји, креира се нова датотека. Читање почиње на почетку датотеке, а уписивање је само у режиму додавања. |
Ако је бинарна датотека обрађена, користите следећи режим приступа да бисте заменили горе наведено:
"рб", "вб", "аб", "рб+", "р+б", "вб+", "в+б", "аб+", "а+б"
затворени фајл
Да бисте затворили датотеку, користите функцију фцлосе(). Прототип функције је следећи:
инт фцлосе (ФИЛЕ *фп);
- Ако је датотека успешно затворена, функција фцлосе() враћа нулу, а ако грешка враћа ЕОФ. Ова функција, у ствари, уклања податке из бафера, затвара датотеку и ослобађа сву меморију која се користи за ту датотеку. ЕОФ је константа дефинисана у датотеци заглавља стдио.х
Стандардна библиотека Ц пружа различите функције за читање и писање датотека по знаковима или као стринг фиксне дужине.
Пишите у датотеку
Ево најједноставнијих функција за писање знакова у ток:
инт фпутц (инт ц, ФИЛЕ *фп);
Функција фпутц () уписује вредност карактера параметра ц у излазни ток на који фп показује. Ако је уписивање успешно, враћа написани карактер и ЕОФ ако дође до грешке. Можете користити следећу функцију за писање стринга који се завршава нулом у ток:
инт фпутс ( цонст цхар *с , ФИЛЕ *фп );
Функција фпутс () уписује стринг с у излазни ток где фп показује. Ако уписи успеју, враћа не-негативну вредност и ЕОФ ако дође до грешке. Такође можете користити функцију инт фпринтф (ФИЛЕ * фп, цонст цхар * формат,...) уписује стринг у датотеку. Пробајте следећи пример:
Напомена: Уверите се да имате доступан тмп директоријум, а ако не постоји, прво га морате креирати на рачунару.
/ тмп је обично привремени директоријум на Линук систему. Ако користите Виндовс систем, потребно је да га измените у постојећи директоријум у локалном окружењу, као што су: Ц: \ тмп, Д: \ тмп, итд.
живи пример
#инцлуде
Када се горњи код компајлира и изврши, креира нову датотеку тест.ткт у / тмп директоријуму. И пише у две линије користећи две различите функције. Хајде да прочитамо ову датотеку следеће.
Прочитајте датотеку
Следеће је најједноставнија функција за читање једног знака из датотеке:
инт фгетц (ДАТОТЕКА * фп);
Функција фгетц () чита знак из улазне датотеке на коју показује фп. Повратна вредност је прочитани знак и ЕОФ ако дође до грешке. Следећа функција вам омогућава да прочитате стринг из тока:
цхар *фгетс (цхар *буф, инт н, ФИЛЕ *фп);
Функција фгетс () чита н-1 карактера из улазног тока којим управља фп. Копира стринг за читање у бафер буфер и додаје нул карактер на крају да би прекинуо стринг.
Ако ова функција наиђе на знак изломљене линије '\ н' или ЕОФ на крају датотеке пре читања последњег знака, онда се враћа само на прочитане знакове, укључујући преломе реда. Такође можете да користите функцију инт фсцанф (ФИЛЕ * фп, цонст цхар * формат,...) за читање стринга из датотеке, али она престаје да чита када наиђе на први размак и прелом реда.
живи пример
#инцлуде
Када се горњи код компајлира и изврши, он чита датотеке креиране у претходном одељку, дајући следеће резултате:
1: Ово 2: се тестира за фпринтф...
3: Ово је тестирање за фпутове...
Прво, метода фсцанф() само чита Тхис .јер наилази на размак позади. Друго, позовите фунцтон фгетс () да прочитате преостали део до краја реда. На крају, позовите фгетс () да бисте у потпуности прочитали други ред.
Бинарна И/О функција
Следеће две функције се користе за бинарни улаз и излаз:
сизе_т фреад (воид *птр, сизе_т сизе_оф_елементс, сизе_т број_елемената, ФИЛЕ *а_филе); сизе_т фврите (цонст воид *птр, сизе_т сизе_оф_елементс, сизе_т број_елемената, ФИЛЕ *а_филе);
Обе функције се читају и пишу за блокове складиштења – обично низове или структуре.
Горе о читању и писању Ц датотеке припада ХДВ Пхоелецтрон Тецхнологи Лтд., софтверској техничкој операцији. И компанија за мрежну опрему (као што је: АЦОНУ/ комуникацијаОНУ/ интелигентОНУ/ влакнаОНУ, итд.) окупио је моћан софтверски тим, за сваког купца прилагодио ексклузивне захтеве коме је то потребно, такође нека наши производи буду интелигентнији и напреднији.