Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

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,

  1. Création d'un fichier
  2. Ouvrir un fichier
  3. Lecture d'un fichier
  4. Écrire dans un fichier
  5. Fermer un fichier

Voici les fonctions de gestion de fichiers les plus importantes disponibles en "C",

fonction but fouvrir () Créer un fichier ou ouvrir un fichier existantfclose () Fermeture d'un fichierfprintf () Écrire un bloc de données dans un fichierfscanf () Lecture d'un bloc de données depuis un fichiergetc () Lit un seul caractère d'un fichierputc () Écrit un seul caractère dans un fichiergetw () Lit un entier à partir d'un fichierputw () Écrire un entier dans un fichierfseek () Définit la position d'un pointeur de fichier à un emplacement spécifiéftell () Renvoie la position actuelle d'un pointeur de fichierrewind () Définit le pointeur de fichier au début d'un fichier


Dans ce tutoriel, vous apprendrez-

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.

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 fichier Description rOuvrez un fichier pour le 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.wOuvrir un fichier en é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.a Ouvrir un fichier en
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 :

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.

  1. 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.
  2. 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 :

  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 à l'aide de 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 <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 :

  1. Dans le programme ci-dessus, nous avons créé et ouvert un fichier appelé fprintf_test.txt en mode écriture.
  2. 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

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

  1. 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.
  2. 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.
  3. 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
  4. 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 :

  1. Dans le programme ci-dessus, nous avons créé et ouvert un fichier appelé demo en mode écriture.
  2. Après l'exécution d'une opération d'écriture, le fichier est fermé à l'aide de la fonction fclose.
  3. 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.
  4. Après avoir effectué une opération de lecture, le fichier est à nouveau fermé à l'aide de la fonction fclose.

Résumé


Langue C

  1. Variables C# et types de données (primitifs)
  2. C Entrée Sortie (E/S)
  3. Gestion des fichiers C
  4. E/S de fichier Python
  5. Apacer :lancement des cartes CV110-SD et CV110-MSD dans le monde
  6. Apacer :série de SSD SV250 de qualité industrielle avec des vitesses de lecture/écriture de 560 et 520 Mo/s
  7. acceed :modules d'E/S pour une communication de données évolutive
  8. Câble de dérivation d'E/S Raspberry PI et adaptateur de carte de connexion
  9. C - Fichier E/S