Leggi la funzione in lingua C

Leggi la funzione in lingua C

La lingua C ha due funzioni di base che consentono di leggere i file utilizzando le funzioni Read () e Fread (). Ha anche metodi con funzioni per leggere i file caratteri per carattere.

È importante conoscere le funzioni di elaborazione dei file, i loro metodi di chiamata, argomenti di input e output, ecc., Al fine di usarli fluentemente perché sono le risorse disponibili per il programmatore per archiviare e smaltire le informazioni memorizzate nel sistema.

In questo articolo di Linux, imparerai come utilizzare la funzione read () per leggere i file.

Spiegheremo tutto su "Ella", la sua sintassi, la chiamata del metodo, gli argomenti di input e output, il tipo di dati che ciascuno accettano e come dichiararli correttamente.

Quindi applichiamo ciò che abbiamo imparato mettendo l'uso di questa funzione in esempi pratici.

Affinché tu sia pienamente consapevole di come utilizzare la funzione read (), abbiamo aggiunto una sezione speciale che descrive tutti gli errori che possono verificarsi quando si utilizza questa funzione, nonché il loro rilevamento e identificazione, in modo da avere il necessario tecniche per una soluzione rapida in caso di errore.

Sintassi della funzione Read () in lingua C

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

Descrizione della funzione read () in lingua C

La funzione read () legge il contenuto del file aperto specificato dal suo descrittore nell'argomento di input "FD". Questa funzione legge e copia il numero di conteggio di byte nel buffer che è indicato da BUF. L'identificatore "FD" è un numero intero che viene restituito come risultato della funzione Open () quando il file viene aperto.

Se la funzione read () restituisce correttamente, restituisce il numero di byte letti. Un risultato uguale a 0 significa che il file viene letto alla fine e -1 significa che si verifica un errore. L'errore specifico può essere identificato recuperando il suo codice dalla variabile Errno Global. Successivamente, troverai una sezione che descriva gli errori che possono verificarsi quando si utilizza la funzione read () e le tecniche per rilevarli e identificarli.

La funzione Read () è dichiarata in "UNISTD.H ”intestazione. Per usarlo, è necessario includere questo file nel codice come segue:

#includere

Come leggere un file con la funzione read () in lingua c

In questo esempio, spiegheremo come aprire e leggere un file utilizzando le funzioni Open () e Read ().

A tale scopo, in precedenza abbiamo creato un file di testo con il nome, "Esempio.txt ", tramite il gestore Linux e lo ha salvato nella directory" documenti ". Abbiamo scritto il primo paragrafo di questo articolo in esso.

Il primo passo nello sviluppo del codice per leggere il file è includere le intestazioni necessarie e creare una funzione principale () che restituisce un valore vuoto. Definiamo l'intero "FD" in esso che funge da descrittore di file, un buffer di caratteri 1024 chiamato "buff" in cui vengono archiviate le informazioni che vengono lette dalla funzione read (). Il percorso dell'array memorizza il percorso e il nome del file che vogliamo leggere.

Dopo aver definito le variabili necessarie, chiamiamo la funzione Open () per aprire il file. Chiamiamo questa funzione passando l'array di percorso con il percorso e il nome del file come primo argomento di input e specificando il flag O_rdonly come secondo argomento. Passiamo l'intero "FD" come argomento di output in cui Open () restituisce il descrittore che usiamo per leggere al file.

Una volta aperto il file, leggiamo il suo contenuto chiamando la funzione Read () e passando il descrittore "FD" che viene restituito dalla funzione Open () come primo argomento. Passiamo il puntatore al buffer "buff" come secondo argomento in cui archiviamo il contenuto da leggere. Infine, passiamo le dimensioni del buffer che è 1024 byte in questo caso. Quindi utilizziamo la funzione printf () per visualizzare i contenuti memorizzati in "buff" nella console di comando.

Ecco il codice completo per questo esempio:

#includere
#includere
#includere
#includere
int main ()

intfd;
Char Buff [1024];
char path [] = "documenti/esempio.TXT";
fd = open (percorso, o_rdonly);
Leggi (FD, Buff, 1024);
printf ("\ n \ n%s \ n \ n", buff);

Nella figura seguente, vediamo la compilazione e l'esecuzione di questo codice. Come possiamo vedere, leggi () mette l'intero contenuto di "Esempio.file txt "in" buff "e la funzione printf () lo stampa sulla console di comando:

Come rilevare e identificare gli errori che possono verificarsi quando si utilizza la funzione read () nella lingua C

L'uso di read () può generare vari errori. Quando ciò accade, questa funzione restituisce un risultato uguale a -1.

Il modo più semplice per determinare se si è verificato un errore è utilizzare una condizione "if" in cui la condizione è il valore di restituzione di -1. Ora, vediamo come puoi usare questo metodo per determinare se si è verificato un errore:

int n;
n = leggi (fd, buff, 1024);
if (n == -1)
printf ("si è verificato un errore durante il tentativo di leggere il file.");

Se la funzione read () restituisce con un errore, passa all'istruzione "if" e stampa il messaggio, "si è verificato un errore durante il tentativo di leggere il file".

Quando si verifica un errore, un codice numerico viene automaticamente memorizzato nella variabile Errno Global che è definita in "Errno.H ”intestazione. Questo codice può essere utilizzato per identificare l'errore che si è verificato.

Quello che segue è un estratto con gli errori che la funzione read () può generare e che sono definiti in "errno.Intestazione h ", insieme a una breve descrizione di ciascun errore e del valore intero associato:

Definizione Valore in errno Errore
Eagain 11 Riprova.
Ebadf 9 Numero di file errato.
EDESTADDRREQ 89 Indirizzo di destinazione richiesto.
Efault 14 Indirizzo errato.
Efbig 27 File troppo grande.
Eintr 4 Chiamata di sistema interrotta.
Einval 22 Argomento non valido.
Eio 5 Errore I/O.
Eperm 1 Operazione non consentita.

Il modo più semplice per identificare un errore è aprire uno switch in cui la variabile Errno è la condizione di salto e ogni caso è una definizione di errore.

Successivamente, esaminiamo un esempio in cui proviamo a inserire un descrittore con un segno negativo, risultando in un errore. Per identificare un errore, utilizziamo la condizione "if" che abbiamo visto nello snippet precedente. Per identificarlo, apriamo un interruttore con i tre errori più comuni che questa funzione può produrre.

#includere
#includere
#includere
#includere
#includere
int main ()

intfd, n;
Char Buff [1024];
char path [] = "documenti/esempio.TXT";
fd = open (percorso, o_rdonly);
n = leggi (0, buff, 1024);
if (n == -1)
switch (errno)
Case eBadf:
printf ("Numero di file cattivo. Errore: %i \ n ", errno);
rottura;
case einval:
printf ("argomento non valido. Errore: %i \ n ", errno);
rottura;
case eio:
printf ("Errore I/O . Errore: %i \ n ", errno);
rottura;


Come possiamo vedere nella figura seguente, la funzione Read () restituisce un errore quando un descrittore non valido viene superato come argomento di input. Il valore che viene recuperato dalla variabile Errno viene utilizzato come condizione di salto che ci consente di identificare l'errore quando inseriamo il caso EBADF.

Conclusione

In questo articolo di Linux, ti abbiamo mostrato come utilizzare la funzione read (), una delle funzioni più comuni implementate nella lingua C per leggere i file.

Abbiamo esaminato la sua sintassi e una sezione che descrivono gli argomenti di operazione teorica, input e output e i suoi tipi di dati. Successivamente, abbiamo implementato ciò che abbiamo appreso attraverso un esempio pratico con codice e immagini che mostrano come aprire e leggere un file usando le funzioni Open () e Read ().

Per avere i mezzi necessari per risolvere un possibile errore durante l'utilizzo di questa funzione, abbiamo aggiunto una sezione speciale che spiega i metodi che il linguaggio C fornisce per rilevare e identificare gli errori.