Write()-funktsioon C-keeles

Write Funktsioon C Keeles



Failihaldus programmeerimisel on ülesanne, mida programmeerija peab valdama. Erinevate avamis-, lugemis- ja kirjutamisfunktsioonide tundmine on oluline, kuna vajame neid alati failidesse salvestatud teabe salvestamiseks või käsutamiseks.

Sellest Linuxi vihje artiklist saate teada, kuidas failide kirjutamiseks kasutada funktsiooni write ().







Selgitame kõike selle ella kohta, selle süntaksit, kõnemeetodit, sisend- ja väljundargumente, igal juhul aktsepteeritavate andmete tüüpi ja seda, kuidas seda õigesti deklareerida.



Seejärel rakendame õpitut, pannes selle funktsiooni kasutamise praktilistesse näidetesse, mille koostasime teile koodijuppide ja piltidega, mis näitavad write() kasutamist C-keeles.



Selleks, et teil oleks igakülgsed teadmised funktsiooni write() kasutamisest, lisasime spetsiaalse jaotise, mis kirjeldab üksikuid vigu, mis selle funktsiooni kasutamisel võivad ilmneda, samuti nende tuvastamist ja tuvastamist, nii et teil on vajalikke võtteid kiireks lahenduseks nende esinemise korral.





Write()-funktsiooni süntaks C-keeles

int kirjutada ( int fd , tühine * buf , suurus_t n ) ;

Write()-funktsiooni kirjeldus C-keeles

Funktsioon write() kirjutab avatud faili. See funktsioon kirjutab puhvri sisu, millele osutab 'buf', faili, mis on määratud selle deskriptoriga sisendargumendis 'fd'. Sisendargumendis “n” tuleb määrata faili kirjutatava ploki suurus.

Funktsiooniga write() kirjutamiseks tuleb fail avada funktsiooniga open() ja määrata atribuutides O_RDONLY või O_RDWR. Vastasel juhul see funktsioon ei mõjuta.



Kui kõne õnnestub, tagastab see sisestatud märkide arvu. Kui kirjutamisel ilmneb viga, tagastab see tulemuse, mis on võrdne -1-ga. Veale viitava identifitseerimiskoodi saab hankida globaalsest muutujast errno, mis on määratletud päises “errno.h”.

Hiljem leiate jaotise, kus selgitame, kuidas tuvastada ja tuvastada selle funktsiooni levinumaid vigu.

Funktsioon write() on määratletud päises “unistd.h”. Lipud, mis määravad faili avamise atribuudid ja režiimi, on määratletud failis 'fcntl.h'. Funktsioonide open() ja write() kasutamiseks peate need päised oma koodi lisama järgmiselt:

#include

#include

Kuidas faili kirjutada C-keele Write()-funktsiooni abil

Selles näites kirjutame tühja tekstifaili nimega 'example.txt', mille lõime varem kataloogis 'Dokumendid'.

Esimene samm on vajalike päiste sisestamine. Funktsiooni main() sees avage fail funktsiooniga open(). Selleks peame deklareerima 'fd' täisarvu, mis toimib faili deskriptorina, ja 1024-märgilise 'buf' puhvri massiivi, mis sisaldab teksti, mida tahame faili kirjutada. Selles puhvris salvestame GCC man-lehe esimese lõigu, et kirjutada see faili „example.txt”.

Pärast faili avamist funktsiooniga open() lugemis-/kirjutusrežiimis kirjutame faili, kutsudes välja funktsiooni write() ja edastades esimese sisendargumendina faili deskriptori “fd”, teiseks osuti “buf” argument ja massiivis sisalduva stringi suurus kolmanda argumendina, mille saame funktsiooni strlen() abil. Siin on selle näite kood:

#include

#include

#include

#include

#include

#include

#include

tühine peamine ( )

{

int fd ;

char puhver [ 1024 ] = 'Kui käivitate GCC, teeb see tavaliselt eeltöötlust, kompileerimist, kokkupanekut ja linkimist. Üldsuvandid võimaldavad teil selle protsessi vahepealses etapis peatada. Näiteks käsk -c ütleb, et linkerit ei tohi käivitada. Siis koosneb väljund järgmisest objektifailid, mille koostaja väljastab.' ;

fd = avatud ( 'Dokumendid/näide.txt' , O_RDWR ) ;

kirjutada ( fd , & puhver , strlen ( puhver ) ) ;

Sulge ( fd ) ;

}

Järgmisel joonisel näeme selle koodi koostamist ja täitmist koos avatud failiga, mis on kirjutatud funktsiooni write() abil:

Kuidas lisada faili lõppu teksti C-keele Write()-funktsiooniga

Kui fail avatakse, määrates O_WRONLY või O_RDWR lipud, hüppab kursor esimesse kohta ja hakkab sealt kirjutama.

Faili lõppu teksti lisamiseks tuleb see faili avamisel määrata loogilise VÕI-toiminguga O_WRONLY või O_RDWR ja lipu O_ APPEND vahel funktsiooni open() sisendlippude argumendis. Nii asetatakse kursor faili lõppu ja kirjutamine algab sealt. Samuti saab atribuute ja kirjutusrežiimi muuta, kui fail avatakse funktsiooniga fcntl().

Järgmisel joonisel näete koodi, mis lisab eelmises näites kirjutatud faili lõppu teksti:

#include

#include

#include

#include

#include

#include

#include

tühine peamine ( )

{

int fd ;

char puhver [ 1024 ] = 'See tekst on lisatud. See tekst on lisatud.' ;

fd = avatud ( 'Dokumendid/näide.txt' , O_RDWR | O_APPEND ) ;

kirjutada ( fd , & puhver , strlen ( puhver ) ) ;

Sulge ( fd ) ;

}

Järgmine pilt näitab lisatud teksti. Nagu näete, alustab selle avamismeetodiga funktsioon write() kirjutamist viimase faili kirjutatud märgi kohast:

Kuidas avastada ja tuvastada vigu, mis võivad ilmneda C-keeles Write()-funktsiooni kasutamisel

Write() kasutamine võib tekitada erinevaid vigu. Kui see juhtub, tagastab see funktsioon tulemuse, mis on võrdne -1-ga.

Lihtsaim viis vea ilmnemise kindlakstegemiseks on kasutada tingimust „kui”, mille tingimuseks on tagastusväärtus -1. Nüüd vaatame, kuidas saate seda meetodit kasutada vea ilmnemise kindlakstegemiseks.

int n ;

n = kirjutada ( fd , & puhver , strlen ( puhver ) ) ;

kui ( n == - 1 ) {

printf ( 'Faili kirjutamisel ilmnes viga.' ) ;

}

Kui funktsioon write() naaseb veaga, läheb see üle lausele 'if' ja prindib teate ' Faili kirjutamisel ilmnes viga “.

Vea ilmnemisel salvestatakse numbriline kood automaatselt globaalsesse muutujasse errno, mis on määratletud päises 'errno.h'. Seda koodi saab kasutada tekkinud vea tuvastamiseks.

Järgmine on väljavõte vigadest, mida funktsioon write() võib tekitada ja mis on määratletud päises 'errno.h', koos iga vea lühikirjeldusega ja sellega seotud täisarvu väärtusega:

Definitsioon Väärtus ekslikult Viga
JÄLLE üksteist Proovi uuesti.
EBADF 9 Vale failinumber.
EDESTADDRREQ 89 Sihtkoha aadress on nõutav.
EDQUOT 122 Kvoodi ületamine.
EFAULT 14 Vale aadress.
EFBIG 27 Fail liiga suur.
EINTR 4 Süsteemikõne katkestati.
ÜKS VALIK 22 Ebakorrektne argument.
EIO 5 I/O viga.
ENOSPC 28 Seadmes pole ruumi.
Ülemine 1 Operatsioon ei ole lubatud.

Lihtsaim viis vea tuvastamiseks on avada lüliti, kus errno muutuja on hüppetingimus ja iga juhtum on vea määratlus.

Järgmisena vaatame näidet, kus proovime sisestada negatiivse märgiga deskriptorit, mille tulemuseks on viga. Vea tuvastamiseks kasutame tingimust „kui”, mida nägime eelmises lõigus. Selle tuvastamiseks avame lüliti kolme levinuima veaga, mida see funktsioon võib tekitada.

#include

#include

#include

#include

#include

#include

#include

tühine peamine ( )

{

int fd ;

int n ;

char puhver [ 1024 ] = 'Tere, Maailm' ;

fd = avatud ( 'Dokumendid/näide.txt' , O_RDWR ) ;

n = kirjutada ( - 2 , & puhver , strlen ( puhver ) ) ;

kui ( n == - 1 ) {

lüliti ( errno ) {

juhtum EBADF : {

printf ( 'Vigane failinumber. Viga: %i \n ' , errno ) ;

murda ; }

juhtum ÜKS VALIK : {

printf ( 'Vigane argument. Viga: %i \n ' , errno ) ;

murda ; }

juhtum EIO : {

printf ( 'I/O viga . Viga: %i \n ' , errno ) ;

murda ; }

}

}

}

Nagu näeme järgmiselt jooniselt, tagastab funktsioon write() vea, kui sisendargumendina edastatakse kehtetu deskriptor. Errno muutujast hangitud väärtust kasutatakse hüppetingimusena, mis võimaldab meil tuvastada vea, kui sisestame EBADF-i juhtumi.

Järeldus

Selles Linuxi vihje artiklis näitasime teile, kuidas kasutada failidesse kirjutamiseks funktsiooni write (). Näitasime teile selle funktsiooni süntaksit ja teoreetilist kirjeldust. Samuti selgitasime vigade tuvastamise ja tuvastamise meetodeid, et teil oleks nende probleemide kiireks lahendamiseks vajalikud tööriistad ja tehnikad.

Et aidata teil näha, kuidas write() töötab, rakendasime selle funktsiooni praktilistes näidetes koodide ja piltidega, mis näitavad selle ja teiste failitöötlusfunktsioonide kasutamist.

Samuti näitasime teile, kuidas valida faili avamise režiim, et lisada teksti faili algusesse või lõppu, ja millised funktsioonid on nende atribuutide muutmiseks saadaval.