Décrit comment le programmeur C crée, ouvre et ferme un fichier texte ou un fichier binaire.
Un fichier, signifie une série d'octets, qu'il s'agisse d'un fichier texte ou d'un fichier binaire. Le langage C fournit non seulement l'accès aux fonctions de niveau supérieur, mais fournit également l'appel sous-jacent (OS) pour traiter les fichiers sur le périphérique de stockage. . Ce chapitre expliquera les appels importants dans la gestion documentaire.
fichier ouvert
Utilisant généralement la fonction fopen() pour créer un nouveau fichier ou ouvrir un fichier existant, cet appel initialise un objet de type FILE qui contient toutes les informations nécessaires pour contrôler le flux. Voici le prototype de cet appel de fonction :
FILE *fopen ( const char * nom de fichier , const char * mode );
Ici filename est une chaîne pour nommer un fichier, la valeur du mode d'accès peut être l'une des valeurs suivantes :
modèle | description |
r | Ouvrez un fichier texte existant qui permet de le lire. |
w | Ouvrez un fichier texte qui permet d'écrire dans le fichier. Si le fichier n'existe pas, un nouveau fichier est créé. Ici, votre programme écrit le contenu depuis le début du fichier. Si le fichier existe, il sera tronqué à zéro et réécrit. |
a | Ouvrez un fichier texte et écrivez dans le fichier en mode ajout. Si le fichier n'existe pas, un nouveau fichier est créé. Ici, votre programme ajoute du contenu aux fichiers que vous possédez déjà. |
r+ | Ouvrez un fichier texte qui vous permet de lire et d'écrire le fichier. |
w+ | Ouvrez un fichier texte qui vous permet de lire et d'écrire le fichier. Si le fichier existe déjà, le fichier est tronqué à une longueur nulle et si le fichier n'existe pas, un nouveau fichier est créé. |
a+ | Ouvrez un fichier texte qui vous permet de lire et d'écrire le fichier. Si le fichier n'existe pas, un nouveau fichier est créé. La lecture commence au début du fichier et l'écriture se fait uniquement en mode ajout. |
Si vous traitez un fichier binaire, utilisez le mode d'accès suivant pour remplacer celui ci-dessus :
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
dossier fermé
Pour fermer le fichier, veuillez utiliser la fonction fclose(). Le prototype de la fonction est le suivant :
int fclose ( FICHIER *fp );
- Si le fichier est fermé avec succès, la fonction fclose() renvoie zéro, et si l'erreur renvoie EOF. En fait, cette fonction supprime les données du tampon, ferme le fichier et libère toute la mémoire utilisée pour ce fichier. EOF est une constante définie dans le fichier d'en-tête stdio.h
La bibliothèque standard C fournit diverses fonctions pour lire et écrire des fichiers par caractères ou sous forme de chaîne de longueur fixe.
Écrire dans le fichier
Voici les fonctions les plus simples pour écrire des caractères dans le flux :
int fputc ( int c , FICHIER *fp );
La fonction fputc() écrit la valeur de caractère du paramètre c dans le flux de sortie vers lequel fp pointe. Si les écritures réussissent, il renvoie le caractère écrit et l'EOF si une erreur se produit. Vous pouvez utiliser la fonction suivante pour écrire une chaîne se terminant par un nul dans le flux :
int fputs ( const char *s , FILE *fp );
La fonction fputs() écrit la chaîne s dans le flux de sortie vers lequel pointe le fp. Si les écritures réussissent, elle renvoie une valeur non négative et l'EOF si une erreur se produit. Vous pouvez également utiliser la fonction int fprintf (FILE * fp, const char * format,...) pour écrire une chaîne dans le fichier. Essayez l'exemple suivant :
Remarque : assurez-vous d'avoir un répertoire tmp disponible, et s'il n'existe pas, vous devez d'abord le créer sur votre ordinateur.
/tmp est généralement un répertoire temporaire sur le système Linux. Si vous exécutez sur le système Windows, vous devez le modifier dans un répertoire existant dans l'environnement local, tel que : C:\tmp, D:\tmp, etc.
exemple vivant
#inclure
Lorsque le code ci-dessus est compilé et exécuté, il crée un nouveau fichier test.txt dans le répertoire /tmp. Et écrit sur deux lignes en utilisant deux fonctions différentes. Lisons ensuite ce fichier.
Lire le fichier
Voici la fonction la plus simple pour lire un seul caractère dans un fichier :
int fgetc ( FICHIER * fp );
La fonction fgetc() lit un caractère du fichier d'entrée vers lequel pointe le fp. La valeur de retour est le caractère lu et l'EOF si une erreur se produit. La fonction suivante permet de lire une chaîne à partir d'un flux :
char *fgets ( char *buf , int n , FILE *fp );
La fonction fgets() lit n-1 caractères du flux d'entrée dirigé par fp. Il copie la chaîne lue dans le tampon buf et ajoute un caractère nul à la fin pour terminer la chaîne.
Si cette fonction rencontre un caractère de ligne brisée '\n' ou l'EOF de fin de fichier avant de lire le dernier caractère, elle revient uniquement aux caractères lus, y compris les sauts de ligne. Vous pouvez également utiliser la fonction int fscanf (FILE * fp, const char * format,...) pour lire la chaîne du fichier, mais elle arrête la lecture lorsqu'elle rencontre le premier espace et saut de ligne.
exemple vivant
#inclure
Lorsque le code ci-dessus est compilé et exécuté, il lit les fichiers créés dans la section précédente, produisant les résultats suivants :
1 : Ce 2 : teste fprintf...
3 : Ceci teste les fputs...
Premièrement, la méthode fscanf() ne lit que This car elle rencontre un espace à l’arrière. Deuxièmement, appelez la fonction fgets () pour lire la partie restante jusqu'à la fin de la ligne. Enfin, appelez fgets() pour lire complètement la deuxième ligne.
Fonction E/S binaire
Les deux fonctions suivantes sont utilisées pour l'entrée et la sortie 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 );
Les deux fonctions sont en lecture et en écriture pour les blocs de stockage, généralement des tableaux ou des structures.
La lecture et l'écriture des fichiers C ci-dessus appartiennent à HDV Phoelectron Technology Ltd., une opération technique logicielle. Et la société pour les équipements liés au réseau (tels que : ACONU/ communicationONU/ intelligentONU/ fibreONU, etc.) a réuni une équipe logicielle puissante, pour que chaque client personnalise les demandes exclusives qui en ont besoin, et rende également nos produits plus intelligents et avancés.