Latest web development tutorials

C documento di alfabetizzazione

Capitolo precedente abbiamo spiegato i dispositivi di input e output elaborazione del linguaggio C standard. In questo capitolo introdurremo il programmatore C come creare, aprire, chiudere, testo o file binari.

Un file, se si tratta di testo o dati binari, sono rappresentativi di una serie di byte. funzione di linguaggio C non solo fornisce l'accesso al livello superiore, ma fornisce anche il sottostante (OS) chiamati ad elaborare i file memorizzati sul dispositivo. Questo capitolo spiegherà l'importanza della chiamata il file manager.

Aprire il file

È possibile utilizzare la funzionefopen () per creare un nuovo documento o aprire un file esistente, la chiamata verrà inizializzare un oggetto di tipo FILE,tipodifile contiene tutte le informazioni necessarie per controllare il flusso. Ecco il prototipo di questa chiamata:

FILE *fopen( const char * filename, const char * mode );

Qui, il nome del file è una stringa utilizzata per denominare il valore Modalitàdi accesso ai file può essere uno dei seguenti valori:

模式描述
r打开一个已有的文本文件,允许读取文件。
w打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会从文件的开头写入内容。
a打开一个文本文件,以追加模式写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会在已有的文件内容中追加内容。
r+打开一个文本文件,允许读写文件。
w+打开一个文本文件,允许读写文件。如果文件已存在,则文件会被截断为零长度,如果文件不存在,则会创建一个新文件。
a+打开一个文本文件,允许读写文件。如果文件不存在,则会创建一个新文件。读取会从文件的开头开始,写入则只能是追加模式。

Se il processo è un file binario, è necessario utilizzare la seguente modalità di accesso modalità di accesso per sostituire quanto sopra:

"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"

Chiudere il file

;

Per chiudere un file, utilizzare la funzione fclose (). prototipo di funzione è la seguente:

 int fclose( FILE *fp );

In caso di successo, chiudere ilfile, la funzione fclose () restituisce zero, si verifica un errore quando si chiude il file, la funzione restituisce EOF.Questa funzione è infatti cancellerà i dati nel buffer, chiudere il file, e rilascia tutta la memoria per il file. EOF è una costante definita nel file di intestazionestdio.h in.

C libreria standard fornisce una varietà di funzioni di premere un carattere o sotto forma di stringa di lunghezza fissa per leggere e scrivere file.

Scrivere sul file

Ecco i caratteri di scrittura per un flusso di la funzione più semplice:

int fputc( int c, FILE *fp );

fputc Function ()scrive il carattere c al valore dei punti parametro fp al flusso di output. Se la scrittura è successo, restituisce il carattere scritto, se si verifica un errore, restituisceEOF.È possibile utilizzare le seguenti funzioni in una stringa null-terminated da scrivere al flusso:

int fputs( const char *s, FILE *fp );

fputs function ()scrive la stringasFP punti nel flusso di output. Se la scrittura è riuscita, verrà restituito un valore non negativo in caso di errore, restituisceEOF.È inoltre possibile utilizzareint fprintf (FILE * fp, const char * format, ...) la funzione di scrivere una stringa da scrivere su un file.Provare i seguenti esempi:

Nota: Assicurarsi di avere a disposizione nelladirectory/ tmp,se questa directory non esiste, è necessario creare la directory del computer.

#include <stdio.h>

main()
{
   FILE *fp;

   fp = fopen("/tmp/test.txt", "w+");
   fprintf(fp, "This is testing for fprintf...\n");
   fputs("This is testing for fputs...\n", fp);
   fclose(fp);
}

Quando il codice di cui sopra è compilato ed eseguito, verrà creato nella directory / tmp, un nuovotest.txt di file,e utilizzare due funzioni diverse scritto due righe. Leggiamo il file.

Leggi il file

Qui è la funzione più semplice per leggere un singolo carattere da un file:

int fgetc( FILE * fp );

fgetc () funzione legge un carattere dal file di input puntato da fp.Il valore di ritorno è una lettura di carattere, se si verifica un errore restituisceEOF.La seguente funzione consente di leggere una stringa dal flusso:

char *fgets( char *buf, int n, FILE *fp );

fgets function ()legge n dallo stream di input puntato da fp - quello carattere. Si leggerà la stringa copiata nel bufferBUF, e, infine, aggiunge un carattere nullper terminare la stringa.

Se la funzione prima di leggere l'ultimo carattere incontrato un carattere di nuova riga '\ n' alla fine del file o EOF, per poi tornare a leggere i caratteri, tra cui nuova riga. È inoltre possibile utilizzareint fscanf (, const FILE * fp char * format, ...) la funzione di leggere una stringa da un file, ma a fronte del primo carattere di spazio, si fermerà la lettura.

#include <stdio.h>

main()
{
   FILE *fp;
   char buff[255];

   fp = fopen("/tmp/test.txt", "r");
   fscanf(fp, "%s", buff);
   printf("1 : %s\n", buff );

   fgets(buff, 255, (FILE*)fp);
   printf("2: %s\n", buff );
   
   fgets(buff, 255, (FILE*)fp);
   printf("3: %s\n", buff );
   fclose(fp);

}

Quando il codice di cui sopra è compilato ed eseguito, si leggerà i file creati su una parte, produce i seguenti risultati:

1 : This
2: is testing for fprintf...

3: This is testing for fputs...

Innanzitutto, il metodo fscanf () sola lettura Questo,perché esso incontra uno spazio nella parte posteriore. Successivamente, chiamare ifgets () per leggere il resto, fino alla fine della linea.Infine, chiamarefgets () leggere nella sua interezza la seconda linea.

funzioni binarie I / O

Le seguenti due funzioni per gli ingressi e le uscite binarie:

size_t fread(void *ptr, size_t size_of_elements, 
             size_t number_of_elements, FILE *a_file);
              
size_t fwrite(const void *ptr, size_t size_of_elements, 
             size_t number_of_elements, FILE *a_file);

Queste due funzioni sono utilizzate per leggere e scrivere blocco di memoria - di solito un array o una struttura.