Descrive come il programmatore C crea, apre e chiude un file di testo o un file binario.
Un file, significa una serie di byte, sia che si tratti di un file di testo o di un file binario, il linguaggio C, non solo fornisce l'accesso alle funzioni di livello superiore, ma fornisce anche la chiamata sottostante (OS) per elaborare i file sul dispositivo di archiviazione . Questo capitolo spiegherà le chiamate importanti nella gestione dei documenti.
file aperto
Solitamente utilizzando la funzione fopen() per creare un nuovo file o aprire un file esistente, questa chiamata inizializza un oggetto del tipo FILE che contiene tutte le informazioni necessarie per controllare il flusso. Ecco il prototipo di questa chiamata di funzione:
FILE *fopen ( const char *nome file, const char * modalità);
Qui filename è una stringa per nominare un file, il valore della modalità di accesso può essere uno dei seguenti valori:
modello | descrizione |
r | Aprire un file di testo esistente che ne consenta la lettura. |
w | Aprire un file di testo che consenta la scrittura nel file. Se il file non esiste, viene creato un nuovo file. Qui, il tuo programma scrive il contenuto dall'inizio del file. Se il file esiste, verrà troncato alla lunghezza zero e riscritto. |
a | Aprire un file di testo e scrivere nel file in modalità di aggiunta. Se il file non esiste, viene creato un nuovo file. Qui, il tuo programma aggiunge contenuto ai file che hai già. |
r+ | Aprire un file di testo che consenta di leggere e scrivere il file. |
w+ | Aprire un file di testo che consenta di leggere e scrivere il file. Se il file esiste già, viene troncato alla lunghezza zero e se il file non esiste, viene creato un nuovo file. |
a+ | Aprire un file di testo che consenta di leggere e scrivere il file. Se il file non esiste, viene creato un nuovo file. La lettura inizia dall'inizio del file e la scrittura avviene solo in modalità aggiunta. |
Se viene elaborato un file binario, utilizzare la seguente modalità di accesso per sostituire quanto sopra:
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
fascicolo chiuso
Per chiudere il file, utilizzare la funzione fclose(). Il prototipo della funzione è il seguente:
int fclose (FILE *fp);
- Se il file viene chiuso correttamente, la funzione fclose() restituisce zero e se l'errore restituisce EOF. Questa funzione, infatti, rimuove i dati dal buffer, chiude il file e libera tutta la memoria utilizzata per quel file. EOF è una costante definita nel file di intestazione stdio.h
La libreria standard C fornisce varie funzioni per leggere e scrivere file in base a caratteri o come stringa a lunghezza fissa.
Scrivi nel file
Ecco le funzioni più semplici per scrivere caratteri nello stream:
int fputc ( int c , FILE *fp );
La funzione fputc() scrive il valore del carattere del parametro c nel flusso di output a cui punta fp. Se le scritture hanno esito positivo, restituisce il carattere scritto e l'EOF se si verifica un errore. È possibile utilizzare la seguente funzione per scrivere una stringa che termina con un null nello stream:
int fputs ( const char *s , FILE *fp );
La funzione fputs() scrive la stringa s nel flusso di output a cui punta fp. Se le scritture hanno esito positivo, restituisce un valore non negativo e l'EOF se si verifica un errore. Puoi anche usare la funzione int fprintf (FILE * fp, const char * format,...) scrive una stringa nel file. Prova il seguente esempio:
Nota: assicurati di avere una directory tmp disponibile e, se non esiste, devi prima crearla sul tuo computer.
/tmp è solitamente una directory temporanea sul sistema Linux. Se esegui il sistema Windows, devi modificarlo in una directory esistente nell'ambiente locale, come: C: \ tmp, D: \ tmp, ecc.
esempio vivente
#includere
Quando il codice precedente viene compilato ed eseguito, crea un nuovo file test.txt nella directory / tmp. E scrive su due righe utilizzando due funzioni diverse. Leggiamo ora questo file.
Leggi il fascicolo
Quella che segue è la funzione più semplice per leggere un singolo carattere da un file:
int fgetc(FILE*fp);
La funzione fgetc() legge un carattere dal file di input a cui punta fp. Il valore restituito è il carattere letto e l'EOF se si verifica un errore. La seguente funzione consente di leggere una stringa da uno stream:
char *fgets ( char *buf , int n , FILE *fp );
La funzione fgets() legge n-1 caratteri dal flusso di input diretto da fp. Copia la stringa letta nel buffer buf e aggiunge un carattere null alla fine per terminare la stringa.
Se questa funzione incontra un carattere di linea spezzata '\ n' o l'EOF della fine del file prima di leggere l'ultimo carattere, ritorna solo ai caratteri letti, comprese le interruzioni di riga. Puoi anche usare la funzione int fscanf (FILE * fp, const char * format,...) per leggere la stringa dal file, ma interrompe la lettura quando incontra il primo spazio e l'interruzione di riga.
esempio vivente
#includere
Quando il codice precedente viene compilato ed eseguito, legge i file creati nella sezione precedente, producendo i seguenti risultati:
1: Questo 2: sta testando fprintf...
3: Questo è il test per gli fput...
Innanzitutto, il metodo fscanf() legge solo This .perché incontra uno spazio sul retro. In secondo luogo, chiama la funzione fgets () per leggere la parte rimanente fino alla fine della riga. Infine, chiama fgets() per leggere completamente la seconda riga.
Funzione I/O binaria
Per l'ingresso e l'uscita binari vengono utilizzate le due funzioni seguenti:
size_t fread (void *ptr, size_t size_of_elements, size_t numero_of_elements, FILE *a_file); size_t fwrite (const void *ptr, size_t dimensione_di_elementi, size_t numero_di_elementi, FILE *a_file);
Entrambe le funzioni vengono lette e scritte per blocchi di archiviazione, solitamente array o strutture.
La lettura e la scrittura di file C di cui sopra appartiene a HDV Phoelectron Technology Ltd., un'azienda tecnica software. E l'azienda per le apparecchiature relative alla rete (come: ACONU/comunicazioneONU/ intelligenteONU/fibraONU, ecc.) ha riunito un potente team di software, affinché ogni cliente personalizzi le richieste esclusive di chi ne ha bisogno, inoltre lascia che i nostri prodotti siano più intelligenti e avanzati.