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:
#includereCome 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:
#includereNella 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:
#includereLa 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;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.
#includereCome 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.