Les funksjon på C -språk

Les funksjon på C -språk

C -språket har to grunnleggende funksjoner som lar deg lese filene ved hjelp av lese- () og Fread () -funksjonene. Den har også metoder med funksjoner for å lese filene karakter-for-karakter.

Det er viktig å kjenne filbehandlingsfunksjonene, samtalemetodene, inngangs- og utgangsargumentene osv., For å bruke dem flytende fordi de er ressursen som er tilgjengelig for programmereren til å lagre og avhende informasjonen som er lagret i systemet.

I denne Linux -hint -artikkelen vil du lære hvordan du bruker lese () -funksjonen til å lese filene.

Vi vil forklare alt om “Ella”, syntaks, metodeanropet, inndata- og utgangsargumentene, typen data som de hver aksepterer, og hvordan de skal erklære dem ordentlig.

Vi bruker deretter det vi lærte ved å bruke bruken av denne funksjonen i praktiske eksempler.

For at du skal være fullstendig klar over hvordan du bruker lese () -funksjonen, la vi til en spesiell seksjon som beskriver alle feilene som kan oppstå når du bruker denne funksjonen, så vel som deres deteksjon og identifisering, slik at du har nødvendig teknikker for en rask løsning i tilfelle feil.

Syntaks av leset () -funksjonen på C -språk

size_t lest (int fd, void *buf, size_t count);

Beskrivelse av lest () -funksjonen på C -språk

Les () -funksjonen leser innholdet i den åpne filen som er spesifisert av dens deskriptor i "FD" inngangsargumentet. Denne funksjonen leser og kopierer tellingsnummeret til byte inn i bufferen som er pekt på av BUF. "FD" -identifikatoren er et heltall som returneres som et resultat av den åpne () -funksjonen når filen åpnes.

Hvis lese () -funksjonen returnerer vellykket, returnerer den antallet byte Les. Et resultat som er lik 0 betyr at filen blir lest til slutt, og -1 betyr at det oppstår en feil. Den spesifikke feilen kan identifiseres ved å hente koden fra errno global variabel. Senere finner du en seksjon som beskriver feilene som kan oppstå når du bruker lesing () -funksjonen og teknikkene for å oppdage og identifisere dem.

Les () -funksjonen er erklært i “Unistd.h ”header. For å bruke den, må du ta med denne filen i koden din som følger:

#inkludere

Hvordan lese en fil med lest () -funksjonen på C -språk

I dette eksemplet vil vi forklare hvordan du åpner og leser en fil ved hjelp av Open () og Read () -funksjonene.

For dette formålet har vi tidligere laget en tekstfil med navnet “Eksempel.txt ”, via Linux -sjefen og lagret den i" Documents "-katalogen. Vi skrev første ledd i denne artikkelen i den.

Det første trinnet i å utvikle koden for å lese filen er å inkludere de nødvendige overskriftene og opprette en Main () -funksjon som returnerer en tom verdi. Vi definerer "FD" -tallet i det som fungerer som filbeskrivelsen, en 1024 tegnbuffer kalt "buff" der informasjonen som leses av lese () -funksjonen er lagret. Array Path lagrer banen og navnet på filen som vi vil lese.

Etter å ha definert de nødvendige variablene, kaller vi Open () -funksjonen for å åpne filen. Vi kaller denne funksjonen ved å passere banearrayen med banen og navnet på filen som det første inngangsargumentet og spesifisere O_RDONLY -flagget som det andre argumentet. Vi passerer "FD" heltallet som utgangsargumentet der det er åpent () returnerer beskrivelsen som vi bruker for å lese til filen.

Når vi har filen åpen, leser vi innholdet ved å kalle lest () -funksjonen og passere "FD" -beskrivelsen som blir returnert av Open () -funksjonen som det første argumentet. Vi sender pekeren til "buff" -bufferen som det andre argumentet der vi lagrer innholdet som skal leses. Til slutt passerer vi størrelsen på bufferen som er 1024 byte i dette tilfellet. Vi bruker deretter printf () -funksjonen for å vise innholdet som er lagret i "buff" i kommandokonsollen.

Her er den komplette koden for dette eksemplet:

#inkludere
#inkludere
#inkludere
#inkludere
int main ()

intfd;
Char Buff [1024];
Char Path [] = "Dokumenter/eksempel.tekst";
FD = Åpen (sti, O_RDONLY);
Les (FD, Buff, 1024);
printf ("\ n \ n%s \ n \ n", buff);

I den følgende figuren ser vi samlingen og utførelsen av denne koden. Som vi kan se, les () setter hele innholdet i “Eksemplet.txt ”-filen til“ buff ”og printf () -funksjonen skriver den ut til kommandokonsollen:

Hvordan oppdage og identifisere feilene som kan oppstå når du bruker lese () -funksjonen på C -språket

Bruke Read () 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 = Les (FD, Buff, 1024);
if (n == -1)
printf ("Det oppstod en feil mens du prøvde å lese filen.");

Hvis lese () -funksjonen kommer tilbake med en feil, overgår den til "hvis" -uttalelsen og skriver ut meldingen, "Det oppstod en feil mens du prøver å lese 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 lesing () -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.
Efault 14 Feil adresse.
Efbig 27 Fil for stor.
Eintr 4 Systemanrop avbrutt.
Einval 22 Ugyldig argument.
Eio 5 I/O -feil.
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
int main ()

intfd, n;
Char Buff [1024];
Char Path [] = "Dokumenter/eksempel.tekst";
FD = Åpen (sti, O_RDONLY);
n = Les (0, buff, 1024);
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 LES () -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 lese () -funksjonen, en av de vanligste funksjonene som er implementert på C -språket for å lese filene.

Vi så på syntaks og et avsnitt som beskriver dens teoretiske drift, inngangs- og utgangsargumenter, og dets datatyper. Etterpå implementerte vi det vi lærte gjennom et praktisk eksempel med kode og bilder som viser hvordan du åpner og leser en fil ved hjelp av Open () og Read () -funksjonene.

For å ha de nødvendige midlene for å feilsøke en mulig feil når vi bruker denne funksjonen, la vi til en spesiell seksjon som forklarer metodene som C -språket gir for å oppdage og identifisere feilene.