Scrivi la funzione in lingua C

Scrivi la funzione in lingua C

La gestione dei file nella programmazione è un'attività in cui il programmatore deve essere fluente. La conoscenza delle varie funzioni aperte, lette e di scrittura è essenziale perché ne abbiamo sempre bisogno per archiviare o smaltire le informazioni che sono archiviate nei file.

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

Spiegheremo tutto su questa Ella, la sua sintassi, il metodo della chiamata, gli argomenti di input e output, il tipo di dati che accetta in ciascun caso e come dichiararli correttamente.

Quindi, applichiamo ciò che abbiamo appreso mettendo l'uso di questa funzione in esempi pratici che abbiamo preparato per te con frammenti di codice e immagini, mostrando l'uso di Write () nella lingua C.

Affinché tu abbia una conoscenza completa dell'uso della funzione Write (), abbiamo aggiunto una sezione speciale che descrive i singoli errori che possono verificarsi quando si utilizza questa funzione, nonché il loro rilevamento e identificazione, in modo da avere il tecniche necessarie per una soluzione rapida in caso di occorrenza.

Sintassi della funzione write () in lingua

int write (int fd, void *buf, size_t n);

Descrizione della funzione Write () in C lingua

La funzione Write () scrive in un file aperto. Questa funzione scrive il contenuto del buffer che è indicato da "buf" al file specificato dal suo descrittore nell'argomento input "FD". La dimensione del blocco da scrivere nel file deve essere specificata nell'argomento di input "N".

Per essere in grado di scrivere con la funzione Write (), il file deve essere aperto con la funzione Open () e specificato negli attributi O_rdonly o O_rdwr. Altrimenti, questa funzione non ha alcun effetto.

Se la chiamata ha esito positivo, restituisce il numero di caratteri inseriti. Se si verifica un errore durante la scrittura, restituisce un risultato uguale a -1. Il codice di identificazione che indica che l'errore può essere recuperato dalla variabile globale Errno che è definita in "Errno.H ”intestazione.

Più tardi, troverai una sezione in cui spieghiamo come rilevare e identificare gli errori più comuni di questa funzione.

La funzione Write () è definita in "UNISTD.H ”intestazione. I flag che definiscono gli attributi e la modalità per aprire il file sono definiti in “FCNTL.H". Per utilizzare le funzioni Open () e Write (), è necessario includere queste intestazioni nel codice come segue:

#includere
#includere

Come scrivere in un file usando la funzione write () in lingua

In questo esempio, scriviamo un file di testo vuoto chiamato "Esempio.txt "che abbiamo creato in precedenza nella directory" documenti ".

Il primo passo è inserire le intestazioni necessarie. All'interno della funzione principale (), aprire il file con la funzione Open (). Per fare ciò, dobbiamo dichiarare l'intero "FD" che funge da descrittore di file e l'array buffer "buf" a 1024 caratteri che contiene il testo che vogliamo scrivere nel file. In questo buffer, archiviamo il primo paragrafo della pagina GCC Man per scriverlo nell'esempio "Esempio.file txt ".

Dopo aver aperto il file con la funzione Open () in modalità lettura/scrittura, scriviamo al file chiamando la funzione Write () e passando il descrittore di file "FD" come primo argomento di input, il puntatore "BUF" come secondo argomento e la dimensione della stringa contenuta nell'array come terzo argomento, che otteniamo con la funzione strlen (). Ecco il codice per questo esempio:

#includere
#includere
#includere
#includere
#includere
#includere
#includere
void main ()

int fd;
char buffer [1024] = "Quando si invoca GCC, normalmente fa preelaborazione, compilation, assemblaggio e collegamento. Le opzioni complessive consentono di interrompere questo processo in una fase intermedia. Ad esempio, l'opzione -c dice di non eseguire il linker.Quindi l'output è costituito da file di oggetti output da parte dell'assemblatore.";
fd = open ("documenti/esempio.txt ", o_rdwr);
scrivere (fd, & buffer, strlen (buffer));
chiudere (FD);

Nella figura seguente, vediamo la compilazione e l'esecuzione di questo codice insieme al file aperto che è scritto dalla funzione Write ():

Come aggiungere un testo alla fine di un file con la funzione Write () in C lingua

Quando viene aperto un file specificando i flag O_wronly o O_rdwr, il cursore passa alla prima posizione e inizia a scrivere da lì.

Per aggiungere un testo alla fine di un file, deve essere specificato da un'operazione logica o tra i flag O_wronly o O_rdwr e il flag di append o_ nell'argomento Flag di input della funzione Open () quando il file viene aperto. In questo modo, il cursore viene posizionato alla fine del file e la scrittura inizia da lì. Inoltre, gli attributi e la modalità di scrittura possono essere modificati una volta che il file è aperto con la funzione fcntl ().

Nella seguente illustrazione, puoi vedere un codice che aggiunge un testo alla fine del file che abbiamo scritto nell'esempio precedente:

#includere
#includere
#includere
#includere
#includere
#includere
#includere
void main ()

int fd;
char buffer [1024] = "Questo testo viene aggiunto. Questo testo viene aggiunto.";
fd = open ("documenti/esempio.txt ", o_rdwr | o_append);
scrivere (fd, & buffer, strlen (buffer));
chiudere (FD);

La seguente immagine mostra il testo aggiunto. Come puoi vedere, con questo metodo di apertura, la funzione Write () inizia a scrivere nella posizione dell'ultimo personaggio che è scritto nel file:

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

L'uso di write () 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 = write (fd, & buffer, strlen (buffer));
if (n == -1)
printf ("si è verificato un errore durante il tentativo di scrivere il file.");

Se la funzione Write () restituisce con un errore, passa all'istruzione "if" e stampa il messaggio, "Si è verificato un errore durante il tentativo di scrivere 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 Write () può generare e che sono definiti nel "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.
Edquot 122 Quota superata.
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.
Enospc 28 Nessun spazio rimasto sul dispositivo.
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
#includere
#includere
void main ()

int fd;
int n;
Char Buffer [1024] = "Hello World";
fd = open ("documenti/esempio.txt ", o_rdwr);
n = write (-2, & buffer, strlen (buffer));
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 Write () restituisce un errore quando un descrittore non valido viene passato 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 write () per scrivere sui file. Ti abbiamo mostrato la sintassi e la descrizione teorica di questa funzione. Abbiamo anche spiegato i metodi di rilevamento e identificazione degli errori in modo da avere gli strumenti e le tecniche necessari per risolvere rapidamente questi problemi.

Per aiutarti a vedere come funziona Write (), abbiamo implementato l'uso di questa funzione in esempi pratici con codici e immagini che mostrano l'uso di questo e delle altre funzioni di elaborazione dei file.

Ti abbiamo anche mostrato come selezionare la modalità apertura del file per inserire un testo all'inizio o alla fine del file e quali funzioni sono disponibili per modificare questi attributi.