Latest web development tutorials

C document de l'alphabétisation

Chapitre précédent nous avons expliqué les périphériques d'entrée et de sortie de traitement en langage C standard. Dans ce chapitre, nous allons présenter le programmeur C comment créer, ouvrir, fermer, fichiers texte ou binaires.

Un fichier, que ce soit du texte ou des données binaires sont représentatives d'une série d'octets. la fonction du langage C fournit non seulement l'accès au niveau supérieur, mais fournit également le sous-jacent (OS) appelés à traiter des fichiers stockés sur le périphérique. Ce chapitre explique l'importance de l'appel du gestionnaire de fichiers.

Ouvrez le fichier

Vous pouvez utiliser la fonctionfopen () pour créer un nouveau document ou ouvrir un fichier existant, l'appel va initialiser un objet de type FILE,typede fichiercontient toutes les informations nécessaires pour contrôler le flux. Voici le prototype de cet appel:

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

Ici, le nom de fichier est une chaîne utilisée pour nommer la valeur du modede mode d'accès de fichier peut être l' une des valeurs suivantes:

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

Si le processus est un fichier binaire, vous devez utiliser le mode d'accès en mode d'accès suivant pour remplacer ce qui précède:

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

Fermez le fichier

;

Pour fermer un fichier, utilisez fclose function (). prototype de la fonction est la suivante:

 int fclose( FILE *fp );

En cas de succès, fermez lefichier, la fonction fclose () renvoie zéro, une erreur se produit lors de la fermeture du fichier, la fonction retourne EOF.Cette fonction est en fait, va effacer les données dans la mémoire tampon, fermez le fichier, et libère toute la mémoire pour le fichier. EOF est une constante définie dans le fichier d' en- têtestdio.h dans.

C bibliothèque standard fournit une variété de fonctions pour appuyer sur un caractère ou sous la forme de chaîne de longueur fixe pour lire et écrire des fichiers.

Écrire à déposer

Voici les caractères d'écriture à un flux de la fonction la plus simple:

int fputc( int c, FILE *fp );

Fonctionfputc () écrit le caractère c à la valeur des points paramètre fp dans le flux de sortie.Si l'écriture est réussie, elle renvoie le caractère écrit, si une erreur se produit, elle renvoieEOF.Vous pouvez utiliser les fonctions suivantes pour une chaîne terminée par zéro à écrire dans le flux:

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

fputs de fonction ()écrit la chaînesà fp points le flux de sortie. Si l'écriture est réussie, elle retourne une valeur non-négative si une erreur se produit, elle renvoieEOF.Vous pouvez également utiliserint fprintf (FILE * fp, const char * format ...) fonction pour écrire une chaîne à écrire dans un fichier.Essayez les exemples suivants:

Remarque: Assurez - vous que vous disposez durépertoire/ tmp,si n'existe pas ce répertoire, vous devrez créer le répertoire sur votre ordinateur.

#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);
}

Lorsque le code ci - dessus est compilé et exécuté, il sera créé dans le répertoire / tmp, un nouveau fichiertest.txt, et utiliser deux fonctions différentes écrites deux lignes.Lisons le fichier.

Lire le dossier

Voici la fonction la plus simple à lire un seul caractère d'un fichier:

int fgetc( FILE * fp );

fgetc () lit un caractère à partir du fichier d'entrée pointé par fp.La valeur de retour est une lecture de caractère, si une erreur se produit retourneEOF.La fonction suivante vous permet de lire une chaîne à partir du flux:

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

fgets de fonction ()lit n à partir du flux d'entrée pointé par fp - le seul caractère. Il va lire la chaîne copié dans le tamponbuf, et enfin ajoute un caractère nulde mettre fin à la chaîne.

Si la fonction avant de lire le dernier caractère rencontré un caractère de nouvelle ligne '\ n' à la fin du fichier ou EOF, pour revenir à lire les caractères, y compris newline. Vous pouvez également utiliserint fscanf (FILE * fp, const char * format ...) fonction pour lire une chaîne à partir d' un fichier, mais dans le visage du premier caractère de l' espace, il va arrêter de lire.

#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);

}

Lorsque le code ci-dessus est compilé et exécuté, il va lire les fichiers créés sur une partie, produit les résultats suivants:

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

3: This is testing for fputs...

Tout d'abord, la méthode fscanf () seulement lire ceci,parce qu'il rencontre un espace dans le dos. Ensuite, appelez lesfgets () pour lire le reste, jusqu'à la fin de la ligne.Enfin, appelerfgets () lu dans son intégralité la deuxième ligne.

Fonctions binaires E / S

Les deux fonctions suivantes pour les entrées et sorties binaires:

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);

Ces deux fonctions sont utilisées pour lire et écrire bloc de mémoire - le plus souvent un tableau ou une structure.