Функција Врите() у језику Ц

Funkcija Vrite U Jeziku C



Управљање датотекама у програмирању је задатак који програмер мора течно да познаје. Познавање различитих функција отварања, читања и писања је од суштинског значаја јер су нам увек потребне за складиштење или одлагање информација које су ускладиштене у датотекама.

У овом чланку о Линук саветима научићете како да користите функцију врите() за писање датотека.







Објаснићемо све о овој елла-и, њеној синтакси, методи позива, улазним и излазним аргументима, типу података које прихвата у сваком случају и како их исправно декларисати.



Затим примењујемо оно што смо научили стављајући употребу ове функције у практичне примере које смо припремили за вас са исечцима кода и сликама, показујући употребу врите() у језику Ц.



Да бисте имали свеобухватно знање о коришћењу функције врите(), додали смо посебан одељак који описује појединачне грешке које се могу јавити приликом коришћења ове функције, као и њихово откривање и идентификацију, тако да имате неопходне технике за брзо решење у случају њиховог настанка.





Синтакса функције Врите() у језику Ц

инт писати ( инт фд , празнина * буф , сизе_т н ) ;

Опис функције Врите() у језику Ц

Функција врите() пише у отворену датотеку. Ова функција уписује садржај бафера на који указује „буф“ у датотеку која је одређена његовим дескриптором у улазном аргументу „фд“. Величина блока који се уписује у датотеку мора бити наведена у улазном аргументу „н“.

Да бисте могли да пишете помоћу функције врите(), датотека мора бити отворена помоћу функције опен() и наведена у атрибутима О_РДОНЛИ или О_РДВР. У супротном, ова функција нема ефекта.



Ако је позив успешан, враћа се број знакова који су унети. Ако дође до грешке током писања, враћа резултат који је једнак -1. Идентификациони код који указује на грешку може се преузети из еррно глобалне променљиве која је дефинисана у заглављу “еррно.х”.

Касније ћете пронаћи одељак у којем објашњавамо како да откријете и идентификујете најчешће грешке ове функције.

Функција врите() је дефинисана у заглављу “унистд.х”. Заставице које дефинишу атрибуте и начин отварања датотеке су дефинисане у „фцнтл.х“. Да бисте користили функције опен() и врите(), морате да укључите ова заглавља у свој код на следећи начин:

#инцлуде <унистд.х>

#инцлуде <фцнтл.х>

Како писати у датотеку користећи функцију Врите() у језику Ц

У овом примеру пишемо празну текстуалну датотеку под називом „екампле.ткт“ коју смо раније креирали у директоријуму „Документи“.

Први корак је уметање потребних заглавља. Унутар функције маин() отворите датотеку помоћу функције опен(). Да бисмо то урадили, потребно је да декларишемо цео број „фд“ који служи као дескриптор датотеке и низ бафера „буф“ од 1024 карактера који садржи текст који желимо да упишемо у датотеку. У овом баферу чувамо први пасус ГЦЦ ман странице да бисмо га записали у датотеку „екампле.ткт“.

Након отварања датотеке са функцијом опен() у режиму читања/писања, уписујемо у датотеку позивањем функције врите() и прослеђивањем дескриптора датотеке „фд“ као првог улазног аргумента, „буф“ показивача као другог аргумент, и величину стринга који је садржан у низу као трећи аргумент, који добијамо помоћу функције стрлен(). Ево кода за овај пример:

#инцлуде <стдлиб.х>

#инцлуде <стдио.х>

#инцлуде <унистд.х>

#инцлуде <сис/типес.х>

#инцлуде <сис/стат.х>

#инцлуде <фцнтл.х>

#инцлуде <стринг.х>

празнина главни ( )

{

инт фд ;

цхар тампон [ 1024 ] = „Када позовете ГЦЦ, он обично врши претходну обраду, компилацију, склапање и повезивање. Опште опције вам омогућавају да зауставите овај процес у средњој фази. На пример, опција -ц каже да се не покреће линкер. Тада се излаз састоји од објектне датотеке које излазе асемблер.' ;

фд = отворен ( „Доцументс/екампле.ткт“ , О_РДВР ) ;

писати ( фд , & тампон , стрлен ( тампон ) ) ;

Близу ( фд ) ;

}

На следећој слици видимо компилацију и извршавање овог кода заједно са отвореном датотеком коју пише функција врите():

Како додати текст на крај датотеке помоћу функције Врите() у језику Ц

Када се датотека отвори навођењем ознака О_ВРОНЛИ или О_РДВР, курсор скаче на прву позицију и почиње да пише одатле.

Да бисте додали текст на крај датотеке, он мора бити специфициран логичком операцијом ИЛИ између заставица О_ВРОНЛИ или О_РДВР и ознаке О_ АППЕНД у аргументу инпут флагс функције опен() када се датотека отвори. На овај начин, курсор се поставља на крај датотеке и писање почиње одатле. Такође, атрибути и начин писања могу се променити када се датотека отвори помоћу функције фцнтл().

На следећој илустрацији можете видети код који додаје текст на крај датотеке који смо написали у претходном примеру:

#инцлуде <стдлиб.х>

#инцлуде <стдио.х>

#инцлуде <унистд.х>

#инцлуде <сис/типес.х>

#инцлуде <сис/стат.х>

#инцлуде <фцнтл.х>

#инцлуде <стринг.х>

празнина главни ( )

{

инт фд ;

цхар тампон [ 1024 ] = 'Овај текст је додат. Овај текст је додат.' ;

фд = отворен ( „Доцументс/екампле.ткт“ , О_РДВР | О_АППЕНД ) ;

писати ( фд , & тампон , стрлен ( тампон ) ) ;

Близу ( фд ) ;

}

Следећа слика приказује додати текст. Као што видите, са овим методом отварања, функција врите() почиње да пише на позицији последњег знака који је уписан у датотеку:

Како открити и идентификовати грешке које могу настати када се користи функција Врите() у језику Ц

Коришћење врите() може да генерише разне грешке. Када се то догоди, ова функција враћа резултат који је једнак -1.

Најлакши начин да утврдите да ли је дошло до грешке је да користите услов „ако“ где је услов повратна вредност -1. Сада, да видимо како можете користити овај метод да утврдите да ли је дошло до грешке:

инт н ;

н = писати ( фд , & тампон , стрлен ( тампон ) ) ;

ако ( н == - 1 ) {

принтф ( „Дошло је до грешке при покушају писања датотеке.“ ) ;

}

Ако се функција врите() врати са грешком, прелази на наредбу „иф“ и штампа поруку „ Дошло је до грешке при покушају писања датотеке “.

Када дође до грешке, нумерички код се аутоматски чува у глобалној променљивој еррно која је дефинисана у заглављу „еррно.х“. Овај код се може користити за идентификацију грешке која се догодила.

Следи извод са грешкама које функција врите() може да генерише и које су дефинисане у заглављу „еррно.х“, заједно са кратким описом сваке грешке и припадајуће целобројне вредности:

Дефиниција Вредност у еррно Грешка
ЕАГАИН Једанаест Покушајте поново.
ЕБАДФ 9 Нетачан број датотеке.
ЕДЕСТАДДРРЕК 89 Потребна је адреса одредишта.
ЕДКУОТ 122 Прекорачена квота.
ЕФАУЛТ 14 Нетачна адреса.
ЕФБИГ 27 Фајл је превелик.
ЕИНТР 4 Системски позив је прекинут.
ЈЕДАН ИЗБОР 22 Неважећи аргумент.
ЕИО 5 И/О грешка.
ЕНОСПЦ 28 Недовољно меморије на уређају.
Уппер 1 Операција није дозвољена.

Најлакши начин да се идентификује грешка је да отворите прекидач где је променљива еррно услов скока и сваки случај је дефиниција грешке.

Затим, погледајмо пример где покушавамо да унесемо дескриптор са негативним предзнаком, што доводи до грешке. Да бисмо идентификовали грешку, користимо услов „ако“ који смо видели у претходном исечку. Да бисмо га идентификовали, отварамо прекидач са три најчешће грешке које ова функција може да произведе.

#инцлуде <стдио.х>

#инцлуде <унистд.х>

#инцлуде <сис/типес.х>

#инцлуде <сис/стат.х>

#инцлуде <фцнтл.х>

#инцлуде <стринг.х>

#инцлуде <еррно.х>

празнина главни ( )

{

инт фд ;

инт н ;

цхар тампон [ 1024 ] = 'Здраво Свете' ;

фд = отворен ( „Доцументс/екампле.ткт“ , О_РДВР ) ;

н = писати ( - 2 , & тампон , стрлен ( тампон ) ) ;

ако ( н == - 1 ) {

прекидач ( еррно ) {

случај ЕБАДФ : {

принтф ( „Погрешан број датотеке. Грешка: %и ' , еррно ) ;

пауза ; }

случај ЈЕДАН ИЗБОР : {

принтф ( „Неважећи аргумент. Грешка: %и ' , еррно ) ;

пауза ; }

случај ЕИО : {

принтф ( „И/О грешка. Грешка: %и ' , еррно ) ;

пауза ; }

}

}

}

Као што можемо видети на следећој слици, функција врите() враћа грешку када се као улазни аргумент проследи неважећи дескриптор. Вредност која се преузима из еррно променљиве се користи као услов за скок који нам омогућава да идентификујемо грешку када уђемо у ЕБАДФ случај.

Закључак

У овом чланку о Линук саветима, показали смо вам како да користите функцију врите() за писање у датотеке. Показали смо вам синтаксу и теоријски опис ове функције. Такође смо објаснили методе откривања грешака и идентификације тако да имате неопходне алате и технике за брзо решавање ових проблема.

Да бисмо вам помогли да видите како функционише врите(), имплементирали смо употребу ове функције у практичним примерима са кодовима и сликама који показују употребу ове и других функција за обраду датотека.

Такође смо вам показали како да изаберете режим отварања датотеке да бисте уметнули текст на почетак или на крај датотеке и које су функције доступне за промену ових атрибута.