C Files I/O :créer, ouvrir, lire, écrire et fermer un fichier
Gestion des fichiers C
Un fichier peut être utilisé pour stocker un grand volume de données persistantes. Comme beaucoup d'autres langages, "C" fournit les fonctions de gestion de fichiers suivantes,
- Création d'un fichier
- Ouvrir un fichier
- Lecture d'un fichier
- Écrire dans un fichier
- Fermer un fichier
Voici les fonctions de gestion de fichiers les plus importantes disponibles en "C",
Dans ce tutoriel, vous apprendrez-
- Comment créer un fichier
- Comment fermer un fichier :
- Écrire dans un fichier
- Fonction fputc() :
- fputs () Fonction :
- fprintf()Fonction :
- Lecture des données d'un fichier
- Lecture et écriture de fichiers interactifs avec getc et putc
Comment créer un fichier
Chaque fois que vous souhaitez travailler avec un fichier, la première étape consiste à créer un fichier. Un fichier n'est rien d'autre qu'un espace dans une mémoire où les données sont stockées.
Pour créer un fichier dans un programme en "C", la syntaxe suivante est utilisée,
FILE *fp; fp = fopen ("file_name", "mode");
Dans la syntaxe ci-dessus, le fichier est une structure de données définie dans la bibliothèque standard.
fopen est une fonction standard utilisée pour ouvrir un fichier.
- Si le fichier n'est pas présent sur le système, il est créé puis ouvert.
- Si un fichier est déjà présent sur le système, il est directement ouvert à l'aide de cette fonction.
fp est un pointeur de fichier qui pointe vers le fichier type.
Chaque fois que vous ouvrez ou créez un fichier, vous devez spécifier ce que vous allez faire avec le fichier. Un fichier en programmation ‘C’ peut être créé ou ouvert à des fins de lecture/écriture. Un mode est utilisé pour spécifier si vous souhaitez ouvrir un fichier pour l'un des objectifs ci-dessous. Voici les différents types de modes de programmation en "C" qui peuvent être utilisés lorsque vous travaillez avec un fichier.
mode ajout. Si un fichier est en mode ajout, alors le fichier est ouvert. Le contenu du fichier ne change pas.r+ ouvrir en lecture et en écriture depuis le débutw+ouvrir en lecture et en écriture, écraser un fichiera+ouvrir en lecture et en écriture, ajouter au fichier
Dans la syntaxe donnée, le nom de fichier et le mode sont spécifiés sous forme de chaînes, ils doivent donc toujours être placés entre guillemets doubles.
Exemple :
#include <stdio.h> int main() { FILE *fp; fp = fopen ("data.txt", "w"); }
Sortie :
Le fichier est créé dans le même dossier où vous avez enregistré votre code.
Vous pouvez spécifier le chemin où vous souhaitez créer votre fichier
#include <stdio.h> int main() { FILE *fp; fp = fopen ("D://data.txt", "w"); }
Comment fermer un fichier
Il faut toujours fermer un dossier chaque fois que les opérations sur le dossier sont terminées. Cela signifie que le contenu et les liens vers le fichier sont terminés. Cela évite d'endommager accidentellement le fichier.
'C' fournit la fonction fclose pour effectuer l'opération de fermeture de fichier. La syntaxe de fclose est la suivante,
fclose (file_pointer);
Exemple :
FILE *fp; fp = fopen ("data.txt", "r"); fclose (fp);
La fonction fclose prend un pointeur de fichier comme argument. Le fichier associé au pointeur de fichier est ensuite fermé à l'aide de la fonction fclose. Il renvoie 0 si la fermeture a réussi et EOF (fin de fichier) si une erreur s'est produite lors de la fermeture du fichier.
Après avoir fermé le fichier, le même pointeur de fichier peut également être utilisé avec d'autres fichiers.
En programmation « C », les fichiers sont automatiquement fermés lorsque le programme est terminé. Fermer un fichier manuellement en écrivant la fonction fclose est une bonne pratique de programmation.
Écrire dans un fichier
En C, lorsque vous écrivez dans un fichier, les caractères de retour à la ligne "\n" doivent être explicitement ajoutés.
La librairie stdio propose les fonctions nécessaires pour écrire dans un fichier :
- fputc(char, file_pointer) :Il écrit un caractère dans le fichier pointé par file_pointer.
- fputs(str, file_pointer) :Il écrit une chaîne dans le fichier pointé par file_pointer.
- fprintf(file_pointer, str, variable_lists) :Il imprime une chaîne dans le fichier pointé par file_pointer. La chaîne peut éventuellement inclure des spécificateurs de format et une liste de variables variable_lists.
Le programme ci-dessous montre comment effectuer une écriture dans un fichier :
Fonction fputc() :
#include <stdio.h> int main() { int i; FILE * fptr; char fn[50]; char str[] = "Guru99 Rocks\n"; fptr = fopen("fputc_test.txt", "w"); // "w" defines "writing mode" for (i = 0; str[i] != '\n'; i++) { /* write to file using fputc() function */ fputc(str[i], fptr); } fclose(fptr); return 0; }
Sortie :
Le programme ci-dessus écrit un seul caractère dans le fputc_test.txt fichier jusqu'à ce qu'il atteigne le symbole de ligne suivant "\n" qui indique que la phrase a été écrite avec succès. Le processus consiste à prendre chaque caractère du tableau et à l'écrire dans le fichier.
- Dans le programme ci-dessus, nous avons créé et ouvert un fichier appelé fputc_test.txt en mode écriture et déclaré notre chaîne qui sera écrite dans le fichier.
- Nous effectuons une opération d'écriture caractère par caractère en utilisant la boucle for et mettons chaque caractère dans notre fichier jusqu'à ce que le caractère "\n" soit rencontré, puis le fichier est fermé à l'aide de la fonction fclose.
Fputs () Fonction :
#include <stdio.h> int main() { FILE * fp; fp = fopen("fputs_test.txt", "w+"); fputs("This is Guru99 Tutorial on fputs,", fp); fputs("We don't need to use for loop\n", fp); fputs("Easier than fputc function\n", fp); fclose(fp); return (0); }
SORTIE :
- Dans le programme ci-dessus, nous avons créé et ouvert un fichier appelé fputs_test.txt en mode écriture.
- Après avoir effectué une opération d'écriture à l'aide de la fonction fputs() en écrivant trois chaînes différentes
- Ensuite, le fichier est fermé à l'aide de la fonction fclose.
Fonction fprintf() :
#include <stdio.h> int main() { FILE *fptr; fptr = fopen("fprintf_test.txt", "w"); // "w" defines "writing mode" /* write to file */ fprintf(fptr, "Learning C with Guru99\n"); fclose(fptr); return 0; }
SORTIE :
- Dans le programme ci-dessus, nous avons créé et ouvert un fichier appelé fprintf_test.txt en mode écriture.
- Après qu'une opération d'écriture a été effectuée à l'aide de la fonction fprintf() en écrivant une chaîne, le fichier est fermé à l'aide de la fonction fclose.
Lire les données d'un fichier
Il existe trois fonctions différentes dédiées à la lecture des données d'un fichier
- fgetc(file_pointer) : Il renvoie le caractère suivant du fichier pointé par le pointeur de fichier. Lorsque la fin du fichier est atteinte, l'EOF est renvoyé.
- fgets(buffer, n, file_pointer) : Il lit n-1 caractères du fichier et stocke la chaîne dans un tampon dans lequel le caractère NULL '\0' est ajouté comme dernier caractère.
- fscanf(file_pointer, conversion_specifiers, variable_adresses) :Il est utilisé pour analyser et analyser les données. Il lit les caractères du fichier et affecte l'entrée à une liste de pointeurs de variables variable_adresses à l'aide de spécificateurs de conversion. Gardez à l'esprit que, comme avec scanf, fscanf arrête de lire une chaîne lorsqu'un espace ou une nouvelle ligne est rencontré.
Le programme suivant illustre la lecture du fichier fputs_test.txt en utilisant respectivement les fonctions fgets(),fscanf() et fgetc() :
#include <stdio.h> int main() { FILE * file_pointer; char buffer[30], c; file_pointer = fopen("fprintf_test.txt", "r"); printf("----read a line----\n"); fgets(buffer, 50, file_pointer); printf("%s\n", buffer); printf("----read and parse data----\n"); file_pointer = fopen("fprintf_test.txt", "r"); //reset the pointer char str1[10], str2[2], str3[20], str4[2]; fscanf(file_pointer, "%s %s %s %s", str1, str2, str3, str4); printf("Read String1 |%s|\n", str1); printf("Read String2 |%s|\n", str2); printf("Read String3 |%s|\n", str3); printf("Read String4 |%s|\n", str4); printf("----read the entire file----\n"); file_pointer = fopen("fprintf_test.txt", "r"); //reset the pointer while ((c = getc(file_pointer)) != EOF) printf("%c", c); fclose(file_pointer); return 0; }
Résultat :
----read a line---- Learning C with Guru99 ----read and parse data---- Read String1 |Learning| Read String2 |C| Read String3 |with| Read String4 |Guru99| ----read the entire file---- Learning C with Guru99
- Dans le programme ci-dessus, nous avons ouvert le fichier appelé "fprintf_test.txt" qui a été précédemment écrit à l'aide de la fonction fprintf(), et il contient la chaîne "Learning C with Guru99". Nous le lisons à l'aide de la fonction fgets() qui lit ligne par ligne où la taille du tampon doit être suffisante pour gérer la ligne entière.
- Nous rouvrons le fichier pour réinitialiser le fichier pointeur pour qu'il pointe au début du fichier. Créez différentes variables de chaînes pour gérer chaque mot séparément. Imprimez les variables pour voir leur contenu. Le fscanf() est principalement utilisé pour extraire et analyser les données d'un fichier.
- Rouvrez le fichier pour réinitialiser le fichier pointeur pour qu'il pointe au début du fichier. Lire les données et les imprimer à partir du fichier caractère par caractère à l'aide de la fonction getc() jusqu'à ce que l'instruction EOF soit rencontrée
- Après avoir effectué une opération de lecture du fichier en utilisant différentes variantes, nous avons de nouveau fermé le fichier à l'aide de la fonction fclose.
Lecture et écriture de fichiers interactifs avec getc et putc
Ce sont les opérations de fichiers les plus simples. Getc signifie obtenir le caractère et putc signifie mettre le caractère. Ces deux fonctions permettent de ne manipuler qu'un seul caractère à la fois.
Le programme suivant illustre les fonctions de gestion de fichiers en programmation "C":
#include <stdio.h> int main() { FILE * fp; char c; printf("File Handling\n"); //open a file fp = fopen("demo.txt", "w"); //writing operation while ((c = getchar()) != EOF) { putc(c, fp); } //close file fclose(fp); printf("Data Entered:\n"); //reading fp = fopen("demo.txt", "r"); while ((c = getc(fp)) != EOF) { printf("%c", c); } fclose(fp); return 0; }
Sortie :
- Dans le programme ci-dessus, nous avons créé et ouvert un fichier appelé demo en mode écriture.
- Après l'exécution d'une opération d'écriture, le fichier est fermé à l'aide de la fonction fclose.
- Nous avons de nouveau ouvert un fichier qui contient maintenant des données en mode lecture. Une boucle while s'exécutera jusqu'à ce que l'eof soit trouvé. Une fois la fin du fichier trouvée, l'opération sera terminée et les données seront affichées à l'aide de la fonction printf.
- Après avoir effectué une opération de lecture, le fichier est à nouveau fermé à l'aide de la fonction fclose.
Résumé
- Un fichier est un espace dans une mémoire où les données sont stockées.
- La programmation en "C" fournit diverses fonctions pour traiter un fichier.
- Un mécanisme de manipulation des fichiers est appelé gestion de fichiers.
- Un fichier doit être ouvert avant d'y effectuer des opérations.
- Un fichier peut être ouvert en mode lecture, écriture ou ajout.
- Les fonctions getc et putc sont utilisées pour lire et écrire un seul caractère.
- La fonction fscanf() permet de lire et d'analyser les données d'un fichier
- Nous pouvons lire (en utilisant getc fonction) un fichier entier en bouclant pour couvrir tout le fichier jusqu'à ce que l'EOF soit rencontré
- Nous pouvons écrire dans un fichier après avoir créé son nom, en utilisant la fonction fprintf() et il doit avoir le caractère de saut de ligne à la fin du texte de la chaîne.
Langue C
- Variables C# et types de données (primitifs)
- C Entrée Sortie (E/S)
- Gestion des fichiers C
- E/S de fichier Python
- Apacer :lancement des cartes CV110-SD et CV110-MSD dans le monde
- Apacer :série de SSD SV250 de qualité industrielle avec des vitesses de lecture/écriture de 560 et 520 Mo/s
- acceed :modules d'E/S pour une communication de données évolutive
- Câble de dérivation d'E/S Raspberry PI et adaptateur de carte de connexion
- C - Fichier E/S