Filstyring i programmering er en oppgave som programmereren må være flytende i. Kunnskap om de forskjellige åpne, lese- og skrivefunksjonene er viktig fordi vi alltid trenger dem for å lagre eller avhende informasjonen som er lagret i filer.
I denne Linux -hint -artikkelen lærer du hvordan du bruker skrive () -funksjonen til å skrive filene.
Vi vil forklare alt om denne Ella, syntaksen, samtalemetoden, inngangs- og utgangsargumentene, typen data den aksepterer i hvert tilfelle, og hvordan du erklærer det riktig.
Deretter bruker vi det vi lærte ved å bruke denne funksjonen i praktiske eksempler som vi forberedte for deg med kodebit og bilder, og viser bruken av skriving () på C -språket.
For at du skal ha en omfattende kunnskap om bruken av skrive- () -funksjonen, la vi til en spesiell seksjon som beskriver de individuelle feilene som kan oppstå når du bruker denne funksjonen, så vel som deres deteksjon og identifisering, slik at du har nødvendige teknikker for en rask løsning i tilfelle deres forekomst.
Syntaks av skriving () -funksjonen på C -språk
int skrive (int fd, void *buf, size_t n);Beskrivelse av skriving () -funksjonen på C -språk
Skrivfunksjonen () skriver til en åpen fil. Denne funksjonen skriver innholdet i bufferen som er pekt på av “BUF” til filen som er spesifisert av dens deskriptor i “FD” inngangsargumentet. Størrelsen på blokken som skal skrives til filen må spesifiseres i "N" inngangsargumentet.
For å kunne skrive med skrive- () -funksjonen, må filen åpnes med Open () -funksjonen og spesifiseres i O_RDONLY- eller O_RDWR -attributtene. Ellers har denne funksjonen ingen effekt.
Hvis samtalen er vellykket, returnerer den antall tegn som legges inn. Hvis en feil oppstår mens du skriver, returnerer den et resultat som er lik -1. Identifikasjonskoden som indikerer at feilen kan hentes fra errno global variabel som er definert i “Errno.h ”header.
Senere finner du et avsnitt der vi forklarer hvordan du kan oppdage og identifisere de vanligste feilene i denne funksjonen.
Skrivefunksjonen () er definert i “unistd.h ”header. Flaggene som definerer attributtene og modusen for å åpne filen er definert i “FCNTL.h ”. For å bruke de åpne () og skrivefunksjonene (), må du ta med disse overskriftene i koden din som følger:
#inkludereHvordan du skriver til en fil ved hjelp av skrive- () -funksjonen på C -språket
I dette eksemplet skriver vi en tom tekstfil som heter “Eksempel.txt ”som vi opprettet tidligere i" Documents "-katalogen.
Det første trinnet er å sette inn de nødvendige overskriftene. Inne i hovedfunksjonen (), åpne filen med den åpne () -funksjonen. For å gjøre dette, må vi erklære det "FD" heltallet som fungerer som filbeskrivelsen, og 1024-karakteren "BUF" -buffergruppen som inneholder teksten som vi ønsker å skrive til filen. I denne bufferen lagrer vi første ledd på GCC Man -siden for å skrive den til “Eksemplet.txt ”-fil.
Etter å ha åpnet filen med Open () -funksjonen i lese-/skrivemodus, skriver vi til filen ved å kalle skrive- () -funksjonen og passere “FD” -filbeskrivelsen som det første inngangsargumentet, “BUF” -pekeren som den andre argument, og størrelsen på strengen som er inneholdt i matrisen som det tredje argumentet, som vi oppnår med strlen () -funksjonen. Her er koden for dette eksemplet:
#inkludereI den følgende figuren ser vi sammenstilling og utførelse av denne koden sammen med den åpnede filen som er skrevet av Writ () -funksjonen:
Hvordan legge til en tekst på slutten av en fil med skrivefunksjonen () på C -språket
Når en fil åpnes ved å spesifisere O_Wronly- eller O_RDWR -flaggene, hopper markøren til den første posisjonen og begynner å skrive derfra.
For å legge til en tekst på slutten av en fil, må den spesifiseres av en logisk eller operasjon mellom O_WRONLY- eller O_RDWR -flaggene og O_ -legg til flagget i inngangsflaggets argument for den åpne () -funksjonen når filen åpnes. På denne måten er markøren plassert på slutten av filen og skrivingen starter derfra. Attributtene og skrivemodus kan også endres når filen er åpnet med FCNTL () -funksjonen.
I den følgende illustrasjonen kan du se en kode som legger til en tekst på slutten av filen som vi skrev i forrige eksempel:
#inkludereFølgende bilde viser den ekstra teksten. Som du kan se, med denne åpningsmetoden, begynner skrive- () -funksjonen å skrive på posisjonen til den siste karakteren som er skrevet til filen:
Hvordan oppdage og identifisere feilene som kan oppstå når du bruker skrivefunksjonen () på C -språket
Bruke skriv () kan generere forskjellige feil. Når dette skjer, returnerer denne funksjonen et resultat som er lik -1.
Den enkleste måten å avgjøre om det har oppstått en feil er å bruke en "if" -tilstand der tilstanden er returverdien på -1. La oss nå se hvordan du kan bruke denne metoden for å finne ut om det har oppstått en feil:
int n;Hvis skrive- () -funksjonen kommer tilbake med en feil, overgår den til "hvis" -uttalelsen og skriver ut meldingen, "Det oppstod en feil mens du prøvde å skrive filen“.
Når en feil oppstår, lagres en numerisk kode automatisk i Errno Global -variabelen som er definert i “Errno.h ”header. Denne koden kan brukes til å identifisere feilen som oppsto.
Følgende er et utdrag med feilene som skrive () -funksjonen kan generere og som er definert i “Errno.H ”overskrift, sammen med en kort beskrivelse av hver feil og tilhørende heltallverdi:
Definisjon | Verdi i errno | Feil |
---|---|---|
Eagain | 11 | Prøv igjen. |
Ebadf | 9 | Feil filnummer. |
Edestaddrreq | 89 | Destinasjonsadresse kreves. |
Edquot | 122 | Overskred kvoten. |
Efault | 14 | Feil adresse. |
Efbig | 27 | Fil for stor. |
Eintr | 4 | Systemanrop avbrutt. |
Einval | 22 | Ugyldig argument. |
Eio | 5 | I/O -feil. |
Enospc | 28 | Ikke mer lagringskapasitet igjen på enheten. |
Eperm | 1 | Operasjon ikke tillatt. |
Den enkleste måten å identifisere en feil er å åpne en bryter der Errno -variabelen er hopptilstanden, og hvert tilfelle er en feildefinisjon.
La oss deretter se på et eksempel der vi prøver å legge inn en deskriptor med et negativt tegn, noe som resulterer i en feil. For å identifisere en feil, bruker vi "hvis" -tilstanden som vi så i forrige utdrag. For å identifisere den, åpner vi en bryter med de tre vanligste feilene som denne funksjonen kan produsere.
#inkludereSom vi kan se i følgende figur, returnerer funksjonen () en feil når en ugyldig deskriptor sendes som et inngangsargument. Verdien som hentes fra Errno -variabelen brukes som en hopptilstand som lar oss identifisere feilen når vi går inn i EBADF -saken.
Konklusjon
I denne Linux -hint -artikkelen viste vi deg hvordan du bruker skrive () -funksjonen til å skrive til filene. Vi viste deg syntaks og den teoretiske beskrivelsen av denne funksjonen. Vi forklarte også feildeteksjons- og identifikasjonsmetoder slik at du har de nødvendige verktøyene og teknikkene for raskt å løse disse problemene.
For å hjelpe deg med å se hvordan skrive () fungerer, implementerte vi bruken av denne funksjonen i praktiske eksempler med koder og bilder som viser bruken av denne og de andre filbehandlingsfunksjonene.
Vi viste deg også hvordan du velger File Open Mode for å sette inn en tekst i begynnelsen eller på slutten av filen, og hvilke funksjoner som er tilgjengelige for å endre disse attributtene.