Maison  >  Article  >  développement back-end  >  Quelles sont les opérations de lecture et d’écriture de fichiers en langage C ?

Quelles sont les opérations de lecture et d’écriture de fichiers en langage C ?

coldplay.xixi
coldplay.xixioriginal
2020-07-27 13:44:174093parcourir

Les opérations de lecture et d'écriture de fichiers en langage C incluent : 1. La fonction pour lire et écrire des caractères dans le fichier, le code est [int fgetc(FILE *stream)] 2. La fonction pour lire et écrire des chaînes ; dans le fichier, le code est [ int fputs(char *string,FILE *stream)].

Quelles sont les opérations de lecture et d’écriture de fichiers en langage C ?

Les opérations de lecture et d'écriture de fichiers en langage C incluent :

1. Fonction d'ouverture de fichier fopen().

L'opération d'ouverture de fichier signifie que le fichier spécifié par l'utilisateur se verra attribuer une zone de structure FILE dans la mémoire, et le pointeur de la structure sera renvoyé au programme utilisateur à l'avenir, le programme utilisateur peut utiliser ce pointeur FILE pour implémenter l'opération d'accès au fichier spécifié. Lors de l'utilisation de la fonction open, le nom du fichier et le mode de fonctionnement du fichier (lecture, écriture ou lecture-écriture) doivent être indiqués

Si le nom du fichier n'existe pas, cela signifie le créer (uniquement pour écrire des fichiers, pour Une erreur se produit lors de la lecture du fichier) et pointe le pointeur de fichier vers le début du fichier. Si un fichier portant le même nom existe déjà, supprimez-le. S'il n'existe aucun fichier portant le même nom, créez le fichier et pointez le pointeur de fichier vers le début du fichier.

fopen(char *filename,char *type);

*filename est le pointeur du nom de fichier du fichier à ouvrir, généralement représenté par le nom du fichier entre guillemets doubles, ou le nom du chemin séparé par des doubles barres obliques inverses. Le paramètre *type indique la méthode d'opération d'ouverture du fichier. Les méthodes de fonctionnement disponibles sont les suivantes :

  • signifiant "r" s'ouvre, en lecture seule ;

  • "w" s'ouvre, le pointeur de fichier ; pointe vers le début, écrivez uniquement ;

  • "a" s'ouvre, pointe vers la fin du fichier, s'ajoute au fichier existant ; 🎜>"rb" ouvre un fichier binaire, en lecture seule

  • "wb" ouvre un fichier binaire, en écriture seule

  • "ab" ouvre un fichier binaire, ajoute ;

  • "r+" Ouvre un fichier existant en mode lecture/écriture

  • "w+" Créer un fichier existant en mode lecture/écriture Nouveau fichier texte ;

  • "a+" ouvre un fichier en mode lecture/écriture pour l'ajouter ; >"rb+" l'ouvre en mode lecture/écriture Ouvre un fichier binaire en mode écriture

  • "wb+" crée un nouveau fichier binaire en mode lecture/écriture ; >

  • "ab+" pour ouvrir un fichier binaire en mode lecture/écriture pour l'ajouter ;
  • Lorsque fopen() est utilisé pour ouvrir avec succès un fichier, la fonction le fera. renvoie un pointeur FILE. Si le fichier ne parvient pas à être ouvert, il sera renvoyé un pointeur NULL.
  • 2. Fermez la fonction fclose() du fichier
  • Une fois l'opération sur le fichier terminée, vous devez utiliser la fonction fclose() pour le fermer. le fichier ouvert est écrit Au moment de l'écriture, si l'espace dans le tampon du fichier n'est pas rempli par du contenu écrit, le contenu ne sera pas écrit dans le fichier ouvert et sera perdu. Ce n'est que lorsque le fichier ouvert est fermé que le contenu restant dans le tampon du fichier peut être écrit dans le fichier, rendant ainsi le fichier complet.

  • De plus, une fois le fichier fermé, la structure FILE correspondant au fichier sera libérée, protégeant ainsi le fichier fermé, car les opérations d'accès au fichier ne seront pas effectuées à ce moment. Fermer un fichier signifie également libérer le tampon du fichier.
int fclose(FILE *stream);

Cela signifie que cette fonction fermera le fichier correspondant au pointeur FILE et renverra une valeur entière. Si le fichier a été fermé avec succès, une valeur 0 est renvoyée, sinon une valeur non nulle est renvoyée.

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{
    FILE *fp;   //  头文件#include <stdio.h>
    if((fp=fopen("123.txt","w"))==NULL)
    {
        printf("file cannot open \n");
        //exit(0);  头文件#include <stdlib.h>
        //exit结束程序,一般0为正常推出,其它数字为异常,其对应的错误可以自己指定。
    }
    else
        printf("file opened for writing \n");
    if(fclose(fp)!=0)
        printf("file cannot be closed \n");
    else
        printf("file is now closed \n");
    return 0;
}

3. Lecture et écriture de fichiers

(1) Fonctions de lecture et d'écriture de caractères dans un fichier (un seul caractère dans le fichier peut être lu et écrit). à la fois) :

int fgetc(FILE *stream);
int getchar(void);
int fputc(int ch,FILE *stream);
int putchar(int ch);
int getc(FILE *stream);
int putc(int ch,FILE *stream);

La fonction lira un caractère dans le fichier pointé par le pointeur de flux, par exemple : ch=fgetc(fp); stream pointer fp et assign Give ch. Lors de l'exécution de la fonction fgetc(), si le pointeur de fichier pointe vers la fin du fichier, l'indicateur de fin de fichier EOF est rencontré (sa valeur correspondante est -1). -1 à ch, qui est couramment vérifié dans les programmes si la valeur de retour de cette fonction est -1 est utilisée pour déterminer si la fin du fichier a été atteinte et s'il faut continuer.

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{
    FILE *fp;
    char ch;
    if((fp=fopen("123.txt","r"))==NULL)
        printf("file cannot open \n");
    else
        printf("file opened for writing \n");
    while((ch=fgetc(fp))!=EOF)
        fputc(ch,stdout); //这里是输出到屏幕
    if(fclose(fp)!=0)
        printf("file cannot be closed \n");
    else
        printf("file is now closed \n");
    return 0;
}

Ce programme ouvre le fichier 123.txt en mode lecture seule Lors de l'exécution de la boucle while, le pointeur de fichier recule d'une position de caractère à chaque boucle. Utilisez la fonction fgetc() pour lire le caractère spécifié par le pointeur de fichier dans la variable ch, puis utilisez la fonction fputc() pour l'afficher à l'écran. Lorsque la marque de fin de fichier EOF est lue, le fichier est. fermé. Le programme ci-dessus utilise la fonction fputc(), qui écrit la valeur de la variable de caractère ch dans le fichier spécifié par le pointeur de flux. Puisque le pointeur de flux utilise le pointeur FILE de la sortie standard (affichage), les caractères lus seront affichés. sur le moniteur. Autre exemple : fputc(ch,fp); Cette fonction exécute la structure et envoie le caractère représenté par ch au fichier pointé par le pointeur de flux fp.

Dans TC, putc() est équivalent à fputc(), et getc() est équivalent à fgetc(). putchar(c) est équivalent à fputc(c,stdout) ; getchar() est équivalent à fgetc(stdin). Notez que l'utilisation de char ch ici n'est en fait pas scientifique, car lorsque la marque de fin est finalement jugée, ch!=EOF est examinée et la valeur de EOF est -1, ce qui est évidemment incomparable avec char. Par conséquent, nous définissons certaines utilisations comme .

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{
    FILE *fp;
    if((fp=fopen("123.txt","a"))==NULL)
        printf("file cannot open \n");
    else
        printf("file opened for writing \n");
    char ch=&#39;e&#39;;
    fputc(ch,fp); //输入到文件中
    if(fclose(fp)!=0)
        printf("file cannot be closed \n");
    else
        printf("file is now closed \n");
    return 0;
}

(2). Fonctions de lecture et d'écriture de chaînes dans des fichiers

.
char *fgets(char *string,int n,FILE *stream);
char *gets(char *s);
int fprintf(FILE *stream,char *format,variable-list);
int fputs(char *string,FILE *stream);
char *puts(char *s);
int fscanf(FILE *stream,char *format,variable-list);

其中fgets()函数将把由流指针指定的文件中n-1个字符,读到由指针string指向的字符数组中去,例如: fgets(buffer,9,fp); 将把fp指向的文件中的8个字符读到buffer内存区,buffer可以是定义的字符数组,也可以是动态分配的内存区。 

注意,fgets()函数读到'/n'就停止,而不管是否达到数目要求。同时在读取字符串的最后加上'/0'。 fgets()函数执行完以后,返回一个指向该串的指针。如果读到文件尾或出错,则均返回一个空指针NULL,所以长用feof()函数来测定是否到了文件尾或者是ferror()函数来测试是否出错,

检测是否已到文件尾,是返回真,否则返回0,其原型是int feof(FILE *stream);

例:if(feof(fp))printf("已到文件尾");

原型是int ferror(FILE *stream);返回流最近的错误代码,可用clearerr()来清除它,clearerr()的原型是void clearerr(FILE *stream);

例:printf("%d",ferror(fp));

例如下面的程序用fgets()函数读test.txt文件中的第一行并显示出来:

#include "stdio.h" 
int main() {
    FILE *fp; 
    char str[128]; 
    if((fp=fopen("123.txt","r"))==NULL) {
        printf("cannot open file/n"); exit(1);
    } 
    while(!feof(fp)) {
        if(fgets(str,128,fp)!=NULL)
        printf("%s",str);
    }
    fclose(fp);
}

相关学习推荐:C视频教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn