Write() funkcija C valodā

Write Funkcija C Valoda



Programmēšanas failu pārvaldība ir uzdevums, kas programmētājam ir jāpārvalda. Zināšanas par dažādām atvēršanas, lasīšanas un rakstīšanas funkcijām ir būtiskas, jo mums tās vienmēr ir vajadzīgas, lai saglabātu vai iznīcinātu failos saglabāto informāciju.

Šajā Linux Hint rakstā jūs uzzināsit, kā failu rakstīšanai izmantot funkciju write ().







Mēs izskaidrosim visu par šo ella, tās sintaksi, izsaukuma metodi, ievades un izvades argumentiem, datu veidu, ko tā pieņem katrā gadījumā un kā to pareizi deklarēt.



Pēc tam mēs pielietojam to, ko esam iemācījušies, ievietojot šīs funkcijas izmantošanu praktiskos piemēros, kurus sagatavojām jums ar koda fragmentiem un attēliem, parādot rakstīšanas () izmantošanu C valodā.



Lai jums būtu visaptverošas zināšanas par funkcijas write() lietošanu, mēs pievienojām īpašu sadaļu, kurā aprakstītas atsevišķas kļūdas, kas var rasties, lietojot šo funkciju, kā arī to noteikšana un identificēšana, lai jūs varētu nepieciešamie paņēmieni ātram risinājumam to rašanās gadījumā.





Write() funkcijas sintakse C valodā

starpt rakstīt ( starpt fd , nederīgs * buf , izmērs_t n ) ;

Write() funkcijas apraksts C valodā

Funkcija write () raksta atvērtā failā. Šī funkcija ieraksta bufera saturu, uz kuru norāda “buf”, failā, ko norāda tā deskriptors “fd” ievades argumentā. Ievades argumentā “n” ir jānorāda failā ierakstāmā bloka lielums.

Lai varētu rakstīt ar funkciju write(), fails ir jāatver ar funkciju open() un jānorāda atribūtos O_RDONLY vai O_RDWR. Pretējā gadījumā šai funkcijai nav nekādas ietekmes.



Ja zvans ir veiksmīgs, tas atgriež ievadīto rakstzīmju skaitu. Ja rakstīšanas laikā rodas kļūda, tas atgriež rezultātu, kas ir vienāds ar -1. Identifikācijas kodu, kas norāda kļūdu, var izgūt no errno globālā mainīgā, kas definēts galvenē “errno.h”.

Vēlāk jūs atradīsit sadaļu, kurā paskaidrosim, kā atklāt un identificēt šīs funkcijas visbiežāk sastopamās kļūdas.

Funkcija write() ir definēta galvenē “unistd.h”. Karogi, kas definē faila atvēršanas atribūtus un režīmu, ir definēti “fcntl.h”. Lai izmantotu funkcijas open() un write(), kodā ir jāiekļauj šīs galvenes šādi:

#include

#include

Kā rakstīt failā, izmantojot Write () funkciju C valodā

Šajā piemērā mēs ierakstām tukšu teksta failu ar nosaukumu “example.txt”, ko izveidojām iepriekš direktorijā “Dokumenti”.

Pirmais solis ir ievietot nepieciešamās galvenes. Funkcijā main () atveriet failu ar funkciju open (). Lai to izdarītu, mums ir jādeklarē “fd” vesels skaitlis, kas kalpo kā faila deskriptors, un 1024 rakstzīmju “buf” bufera masīvs, kurā ir teksts, ko vēlamies ierakstīt failā. Šajā buferī mēs saglabājam GCC mana lapas pirmo rindkopu, lai to ierakstītu failā “example.txt”.

Pēc faila atvēršanas ar funkciju open() lasīšanas/rakstīšanas režīmā mēs ierakstām failā, izsaucot Write() funkciju un nododot faila deskriptoru “fd” kā pirmo ievades argumentu, bet “buf” rādītāju kā otro. arguments un virknes lielums, kas ir ietverts masīvā kā trešais arguments, ko iegūstam ar funkciju strlen(). Šeit ir šī piemēra kods:

#include

#include

#include

#include

#include

#include

#include

nederīgs galvenais ( )

{

starpt fd ;

char buferis [ 1024 ] = 'Kad jūs izsaucat GCC, tas parasti veic priekšapstrādi, kompilāciju, montāžu un saistīšanu. Kopējās opcijas ļauj apturēt šo procesu starpposmā. Piemēram, opcija -c norāda nedarbināt saiti. Tad izvade sastāv no objektu faili, ko izvada montētājs.' ;

fd = atvērts ( 'Dokumenti/example.txt' , O_RDWR ) ;

rakstīt ( fd , & buferis , strlen ( buferis ) ) ;

aizveriet ( fd ) ;

}

Nākamajā attēlā mēs redzam šī koda apkopošanu un izpildi kopā ar atvērto failu, ko raksta funkcija write ():

Kā pievienot tekstu faila beigās ar Write () funkciju C valodā

Kad fails tiek atvērts, norādot karodziņus O_WRONLY vai O_RDWR, kursors pāriet uz pirmo pozīciju un sāk rakstīt no turienes.

Lai faila beigās pievienotu tekstu, tas ir jānorāda ar loģisku VAI darbību starp karodziņiem O_WRONLY vai O_RDWR un karogu O_ APPEND funkcijas open() ievades karodziņu argumentā, kad fails tiek atvērts. Tādā veidā kursors tiek novietots faila beigās un rakstīšana sākas no turienes. Arī atribūtus un rakstīšanas režīmu var mainīt, kad fails tiek atvērts ar funkciju fcntl ().

Nākamajā ilustrācijā varat redzēt kodu, kas pievieno tekstu faila beigās, kuru mēs rakstījām iepriekšējā piemērā:

#include

#include

#include

#include

#include

#include

#include

nederīgs galvenais ( )

{

starpt fd ;

char buferis [ 1024 ] = 'Šis teksts ir pievienots. Šis teksts ir pievienots.' ;

fd = atvērts ( 'Dokumenti/example.txt' , O_RDWR | O_APPEND ) ;

rakstīt ( fd , & buferis , strlen ( buferis ) ) ;

aizveriet ( fd ) ;

}

Nākamajā attēlā redzams pievienotais teksts. Kā redzat, izmantojot šo atvēršanas metodi, funkcija write () sāk rakstīt pēdējās rakstzīmes pozīcijā, kas ierakstīta failā:

Kā atklāt un identificēt kļūdas, kas var rasties, izmantojot Write () funkciju C valodā

Rakstīšanas () izmantošana var radīt dažādas kļūdas. Ja tas notiek, šī funkcija atgriež rezultātu, kas ir vienāds ar -1.

Vienkāršākais veids, kā noteikt, vai ir notikusi kļūda, ir izmantot nosacījumu “ja”, kur nosacījums ir atgriešanas vērtība -1. Tagad apskatīsim, kā varat izmantot šo metodi, lai noteiktu, vai ir radusies kļūda:

starpt n ;

n = rakstīt ( fd , & buferis , strlen ( buferis ) ) ;

ja ( n == - 1 ) {

printf ( 'Mēģinot rakstīt failu, radās kļūda.' ) ;

}

Ja funkcija write () atgriežas ar kļūdu, tā pāriet uz “if” priekšrakstu un izdrukā ziņojumu “ Mēģinot rakstīt failu, radās kļūda “.

Ja rodas kļūda, globālajā mainīgajā errno, kas ir definēts galvenē “errno.h”, automātiski tiek saglabāts ciparu kods. Šo kodu var izmantot, lai identificētu radušos kļūdu.

Tālāk ir sniegts izvilkums ar kļūdām, ko var ģenerēt funkcija write () un kuras ir definētas galvenē “errno.h”, kā arī īss katras kļūdas apraksts un saistītā veselā skaitļa vērtība:

Definīcija Vērtība ir kļūda Kļūda
VĒLREIZ vienpadsmit Mēģini vēlreiz.
EBADF 9 Nepareizs faila numurs.
EDESTADDRREQ 89 Nepieciešama galamērķa adrese.
EDQUOT 122 Pārsniegta kvota.
EFAULT 14 Nepareiza adrese.
EFBIG 27 Fails ir pārāk liels.
EINTR 4 Sistēmas zvans pārtraukts.
VIENA IZVĒLE 22 Nederīgs arguments.
EIR 5 I/O kļūda.
ENOSPC 28 Ierīcē vairs nav vietas.
Augšējais 1 Operācija nav atļauta.

Vienkāršākais veids, kā identificēt kļūdu, ir atvērt slēdzi, kur errno mainīgais ir lēciena nosacījums un katrs gadījums ir kļūdas definīcija.

Tālāk apskatīsim piemēru, kurā mēģinām ievadīt deskriptoru ar negatīvu zīmi, kā rezultātā rodas kļūda. Lai identificētu kļūdu, mēs izmantojam nosacījumu “ja”, ko redzējām iepriekšējā fragmentā. Lai to identificētu, mēs atveram slēdzi ar trim visbiežāk sastopamajām kļūdām, ko šī funkcija var radīt.

#include

#include

#include

#include

#include

#include

#include

nederīgs galvenais ( )

{

starpt fd ;

starpt n ;

char buferis [ 1024 ] = 'Sveika pasaule' ;

fd = atvērts ( 'Dokumenti/example.txt' , O_RDWR ) ;

n = rakstīt ( - 2 , & buferis , strlen ( buferis ) ) ;

ja ( n == - 1 ) {

slēdzis ( kļūda ) {

lietu EBADF : {

printf ( 'Slikts faila numurs. Kļūda: %i \n ' , kļūda ) ;

pārtraukums ; }

lietu VIENA IZVĒLE : {

printf ( 'Nederīgs arguments. Kļūda: %i \n ' , kļūda ) ;

pārtraukums ; }

lietu EIR : {

printf ( 'I/O kļūda . Kļūda: %i \n ' , kļūda ) ;

pārtraukums ; }

}

}

}

Kā redzams nākamajā attēlā, funkcija write () atgriež kļūdu, ja kā ievades arguments tiek nodots nederīgs deskriptors. Vērtība, kas tiek izgūta no errno mainīgā, tiek izmantota kā lēciena nosacījums, kas ļauj mums identificēt kļūdu, ievadot EBADF gadījumu.

Secinājums

Šajā Linux Hint rakstā mēs parādījām, kā izmantot rakstīšanas () funkciju, lai rakstītu failos. Mēs parādījām šīs funkcijas sintaksi un teorētisko aprakstu. Mēs arī izskaidrojām kļūdu noteikšanas un identificēšanas metodes, lai jums būtu nepieciešamie rīki un paņēmieni šo problēmu ātrai risināšanai.

Lai palīdzētu jums redzēt, kā darbojas write(), mēs ieviesām šīs funkcijas izmantošanu praktiskos piemēros ar kodiem un attēliem, kas parāda šīs un citu failu apstrādes funkciju izmantošanu.

Mēs arī parādījām, kā izvēlēties faila atvēršanas režīmu, lai faila sākumā vai beigās ievietotu tekstu, un kādas funkcijas ir pieejamas, lai mainītu šos atribūtus.