Funzione pre -pre -C

Funzione pre -pre -C
Nel linguaggio di programmazione C, lo scopo del preread () La funzione è leggere il numero specificato di byte (n) di input che sono indicati dal descrittore di file, nell'area buffer definita della memoria. IL preread () La funzione fa la stessa cosa del Leggere() Metodo, ma inizia a leggere da un luogo specifico nel file anziché aggiornare l'intero file con il puntatore del file. La posizione del puntatore del file non è influenzata. Tuttavia, il valore di offset viene utilizzato per specificare la posizione iniziale del file. Dobbiamo esaminare come funziona questa funzione per vedere questo.

Prima di andare oltre, dobbiamo comprendere la sintassi della funzione preadata e i suoi file di intestazione necessari per questa illustrazione. IL unistd Il file di intestazione viene utilizzato per funzionare con la funzione preadata. Quindi, ecco il codice da inserire nel file del linguaggio di programmazione C:

#includere

IL preread () La funzione contiene gli stessi tre parametri iniziali del Leggere() funzione e il quarto parametro è offset per la posizione specificata all'interno del file. Qualsiasi tentativo di eseguire il preread () funzione su un file che non può completare un'azione di ricerca comporterà un errore. Ecco la sintassi della funzione preassa:

SSIZE_T PREAD (int file_descriptor, void *buffer, size_t no_of_n_bytes, off_t offset);

Questa funzione restituisce un numero intero non negativo, indicando che ha letto correttamente il numero specificato di byte restituiti da questa funzione. Se restituisce un valore negativo, non riesce a leggere il numero specificato di byte. Ha impostato il errno A Ebadf (il che significa che il descrittore di file non è un descrittore di file o socket valido), Econnreset (Un peer ha forzato la risoluzione di una connessione), Efault, Enobufs (Risorse di sistema insufficienti per finire la chiamata), ecc.

Per ottenere i dettagli di errno, Si prega di fare qualche ricerca online. La funzione di lettura non richiede l'autorizzazione per leggere un file dal file system o dalla rete.

Esempio 1

L'esempio seguente apre un file e legge i dati da esso. Per iniziare questo tutorial, avviare un terminale in Linux, Unix o qualsiasi altro sistema operativo desiderato. Quindi, come mostrato di seguito, spostati dalla directory corrente a un'altra directory di lavoro appropriata o una cartella "opere" nel nostro caso. Utilizzare il comando "LS" per visualizzare quasi tutti i file e le directory nella directory di lavoro. Nell'editor VIM, apri o crea un nuovo file intitolato "Preada.C ", un file di linguaggio di programmazione C.

Stiamo usando l'editor VIM per aprirlo e crearlo. Tuttavia, puoi usare qualsiasi editor che ti piaccia, come nano, testo, ecc. Puoi vedere che abbiamo un nuovo.TXT file in questo elenco di directory. Questo file verrà utilizzato nel nostro codice C ora. Guarda il seguente schermo del terminale per visualizzare l'output:

I file di intestazione sono inclusi nelle prime tre righe. Successivamente, il metodo principale inizia con la sua prima riga che dichiara due variabili interi, i.e., Num E filedeScriptor. In seguito, impostiamo l'offset su 5. Definiamo un "buffer" di array di caratteri e impostiamo il valore su "Test testo" nella terza riga della funzione principale. Stiamo fornendo l'accesso in sola lettura all'utente al nuovo.TXT file nell'espressione condizionale con l'aiuto di un aprire() funzione.

La funzione aperta è qui per restituire un valore del descrittore che viene registrato nella variabile filedeScriptor. Se il descrittore ottiene il valore inferiore a 0, il Perror () la funzione verrà eseguita per lanciare un errore. Nell'istruzione Else, utilizziamo la funzione preadata per trasmettere i valori delle variabili e la funzione sizeof per ridurre la dimensione del tampone se il descrittore ottiene il valore maggiore di 0. L'istruzione di stampa ha visualizzato l'output.

Quello che segue è il contenuto del nuovo.file txt. Il testo del buffer è sulla terza riga, che è il punto di lettura offset. Guarda il seguente schermo del terminale per visualizzare l'output:

Ora usa il compilatore C per compilare il prereda.C file. Utilizziamo il compilatore GCC per la compilazione e l'esecuzione del codice C. Nel terminale, digitare "GCC" e inserire il nome del file C necessario, seguito dal -o Switch e il nome del file di output visualizzato nella seguente screenshot. Il compilatore visualizzerà eventuali errori durante la compilation nella finestra terminale. Il file di output richiesto viene creato se la compilazione ha esito positivo e può essere trovato nella directory di lavoro.

L'output può fluttuare in base al valore di offset. Allo stesso modo, se il valore del buffer viene modificato, l'uscita sullo schermo del terminale cambierà senza dubbio. Ora, digitare il seguente comando nel prompt dei comandi per eseguire il file di output. Guarda il seguente schermo del terminale per visualizzare l'output:

Ora, usando l'editor VIM, vogliamo aggiornare il prereda File e è necessario impostare il valore per offset su 8 e per l'aggiornamento del buffer, la stringa su "animali" anziché il "testo di prova" come codice mostrato nella seguente immagine:

Poiché abbiamo apportato modifiche al nostro file di codice del programma, ora dobbiamo ricompilare il nostro codice. Il processo di compilazione è lo stesso eseguito nei passaggi precedenti. Ecco l'immagine della nuova schermata di compilazione:

Ora dobbiamo stampare l'output sullo schermo usando il produzione O file oggetto Abbiamo ottenuto dopo aver completato la procedura di compilazione. Vedere l'output sullo schermo del terminale digitando il comando seguente. L'output di questo è "animale". Guarda la seguente schermata del terminale allegato per visualizzare l'uscita:

Conclusione

Questo articolo ha mostrato l'uso della funzione preassa di C per leggere i dati da alcuni file di testo del nostro sistema Linux in byte. Abbiamo discusso di come a preread () La funzione è diversa dal semplice Leggere() funzione a causa dell'utilizzo di un punto specifico per leggere i dati da un file.