Skrivefunksjon på C -språk

Skrivefunksjon på C -språk

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:

#inkludere
#inkludere

Hvordan 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:

#inkludere
#inkludere
#inkludere
#inkludere
#inkludere
#inkludere
#inkludere
tomrom ()

int fd;
Char Buffer [1024] = "Når du påkaller GCC, gjør det normalt forbehandling, kompilering, montering og kobling. De overordnede alternativene lar deg stoppe denne prosessen på et mellomfase. For eksempel sier -C -alternativet ikke å kjøre linkeren.Deretter består utgangen av objektfiler som er utdata av Assembler.";
FD = Åpne ("Dokumenter/eksempel.txt ", o_rdwr);
skriv (FD, & Buffer, Strlen (buffer));
Lukk (FD);

I 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:

#inkludere
#inkludere
#inkludere
#inkludere
#inkludere
#inkludere
#inkludere
tomrom ()

int fd;
char buffer [1024] = "Denne teksten er lagt til. Denne teksten er lagt til.";
FD = Åpne ("Dokumenter/eksempel.txt ", o_rdwr | o_append);
skriv (FD, & Buffer, Strlen (buffer));
Lukk (FD);

Fø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;
n = skriv (fd, & buffer, strlen (buffer));
if (n == -1)
printf ("Det oppstod en feil mens du prøvde å skrive filen.");

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.

#inkludere
#inkludere
#inkludere
#inkludere
#inkludere
#inkludere
#inkludere
tomrom ()

int fd;
int n;
Char Buffer [1024] = "Hello World";
FD = Åpne ("Dokumenter/eksempel.txt ", o_rdwr);
n = skriv (-2, & buffer, strlen (buffer));
if (n == -1)
bryter (errno)
sak ebadf:
printf ("Dårlig filnummer. Feil: %i \ n ", errno);
gå i stykker;
sak einval:
printf ("Ugyldig argument. Feil: %i \ n ", errno);
gå i stykker;
sak EIO:
printf ("I/o feil . Feil: %i \ n ", errno);
gå i stykker;


Som 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.