E / S de fichiers C: créer, ouvrir, lire, écrire et fermer un fichier

Table des matières:

Anonim

C Gestion des fichiers

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,

  1. Création d'un dossier
  2. Ouvrir un fichier
  3. Lire un fichier
  4. Ecrire dans un fichier
  5. Fermer un dossier

Voici les fonctions de gestion de fichiers les plus importantes disponibles dans «C»,

fonction but
fopen () Créer un fichier ou ouvrir un fichier existant
fclose () Fermer un dossier
fprintf () Ecrire un bloc de données dans un fichier
fscanf () Lire un bloc de données à partir d'un fichier
getc () Lit un seul caractère dans un fichier
putc () Ecrit un seul caractère dans un fichier
getw () Lit un entier dans un fichier
putw () Ecrire un entier dans un fichier
fseek () Définit la position d'un pointeur de fichier vers un emplacement spécifié
ftell () Renvoie la position actuelle d'un pointeur de fichier
rembobiner () Définit le pointeur de fichier au début d'un fichier

Dans ce didacticiel, vous apprendrez-

  • Comment créer un fichier
  • Comment fermer un fichier:
  • Ecrire dans un fichier
    • Fonction fputc ():
    • Fonction fputs ():
    • Fonction fprintf ():
  • Lire des données à partir 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 'C' en suivant la syntaxe,

FILE *fp;fp = fopen ("file_name", "mode");

Dans la syntaxe ci-dessus, le fichier est une structure de données qui est 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 de 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 à l'une des fins indiquées ci-dessous. Voici les différents types de modes de programmation «C» qui peuvent être utilisés tout en travaillant avec un fichier.

Mode fichier Description
r Ouvrez un fichier à lire. Si un fichier est en mode lecture, aucune donnée n'est supprimée si un fichier est déjà présent sur un système.
w Ouvrez un fichier pour l'écriture. Si un fichier est en mode écriture, un nouveau fichier est créé si un fichier n'existe pas du tout. Si un fichier est déjà présent sur un système, toutes les données à l'intérieur du fichier sont tronquées et il est ouvert à des fins d'écriture.
une Ouvrez un fichier en mode ajout. Si un fichier est en mode ajout, le fichier est ouvert. Le contenu du fichier ne change pas.
r + ouvert à la lecture et à l'écriture depuis le début
w + ouvrir pour lire et écrire, écraser un fichier
un + ouvert pour lecture et écriture, ajout au fichier

Dans la syntaxe donnée, le nom de fichier et le mode sont spécifiés sous forme de chaînes et doivent donc toujours être entre guillemets.

Exemple:

#include int main() {FILE *fp;fp = fopen ("data.txt", "w");}

Production:

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 int main() {FILE *fp;fp = fopen ("D://data.txt", "w");}

Comment fermer un fichier

Il faut toujours fermer un fichier chaque fois que les opérations sur le fichier 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) s'il y a une erreur 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.

Dans la programmation «C», les fichiers sont automatiquement fermés lorsque le programme est terminé. La fermeture manuelle d'un fichier en écrivant la fonction fclose est une bonne pratique de programmation.

Ecrire 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 bibliothèque stdio offre 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 variables_lists.

Le programme ci-dessous montre comment écrire dans un fichier:

Fonction fputc ():

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

Production:

Le programme ci-dessus écrit un seul caractère dans le fichier fputc_test.txt 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.

  1. Dans le programme ci-dessus, nous avons créé et ouvert un fichier appelé fputc_test.txt en mode écriture et déclarons notre chaîne qui sera écrite dans le fichier.
  2. Nous faisons 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é en utilisant la fonction fclose.

Fonction fputs ():

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

PRODUCTION:

  1. Dans le programme ci-dessus, nous avons créé et ouvert un fichier appelé fputs_test.txt en mode écriture.
  2. Après avoir effectué une opération d'écriture en utilisant la fonction fputs () en écrivant trois chaînes différentes
  3. Ensuite, le fichier est fermé à l'aide de la fonction fclose.

Fonction fprintf ():

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

PRODUCTION:

  1. Dans le programme ci-dessus, nous avons créé et ouvert un fichier appelé fprintf_test.txt en mode écriture.
  2. Une fois qu'une opération d'écriture est effectuée à l'aide de la fonction fprintf () en écrivant une chaîne, le fichier est fermé à l'aide de la fonction fclose.

Lire des données à partir 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 à partir du fichier fputs_test.txt en utilisant respectivement les fonctions fgets (), fscanf () et fgetc ():

#include 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 pointerchar 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 pointerwhile ((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

  1. Dans le programme ci-dessus, nous avons ouvert le fichier appelé "fprintf_test.txt" qui a été précédemment écrit en utilisant la fonction fprintf (), et il contient la chaîne "Learning C with Guru99". Nous le lisons en utilisant la fonction fgets () qui lit ligne par ligne où la taille du tampon doit être suffisante pour gérer toute la ligne.
  2. Nous rouvrons le fichier pour réinitialiser le fichier du pointeur pour qu'il pointe au début du fichier. Créez diverses 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.
  3. Rouvrez le fichier pour réinitialiser le fichier du pointeur pour qu'il pointe au début du fichier. Lisez les données et imprimez-les à partir du fichier caractère par caractère à l'aide de la fonction getc () jusqu'à ce que l'instruction EOF soit rencontrée
  4. Après avoir effectué une opération de lecture du fichier en utilisant différentes variantes, nous avons à nouveau fermé le fichier en utilisant 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 get character, et putc signifie put character. Ces deux fonctions sont utilisées pour ne gérer qu'un seul caractère à la fois.

Le programme suivant montre les fonctions de gestion de fichiers dans la programmation 'C':

#include int main() {FILE * fp;char c;printf("File Handling\n");//open a filefp = fopen("demo.txt", "w");//writing operationwhile ((c = getchar()) != EOF) {putc(c, fp);}//close filefclose(fp);printf("Data Entered:\n");//readingfp = fopen("demo.txt", "r");while ((c = getc(fp)) != EOF) {printf("%c", c);}fclose(fp);return 0;}

Production:

  1. Dans le programme ci-dessus, nous avons créé et ouvert un fichier appelé demo en mode écriture.
  2. Après une opération d'écriture, le fichier est fermé à l'aide de la fonction fclose.
  3. Nous avons à 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.
  4. 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 «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'effectuer des opérations sur celui-ci.
  • 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 la fonction getc ) 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 nouvelle ligne à la fin de la chaîne de texte.