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)].
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);
où *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 ; >
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.
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);
#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; }
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='e'; 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!