Heim > Artikel > Backend-Entwicklung > Was sind die Lese- und Schreibvorgänge für Dateien in der Sprache C?
Zu den Lese- und Schreibvorgängen für C-Sprachdateien gehören: 1. Die Funktion zum Lesen und Schreiben von Zeichen in der Datei, der Code lautet [int fgetc(FILE *stream)] 2. Die Funktion zum Lesen und Schreiben von Zeichenfolgen In der Datei lautet der Code [ int fputs(char *string,FILE *stream)].
Die Lese- und Schreibvorgänge für C-Sprachdateien umfassen:
1. Dateiöffnungsfunktion fopen().
Der Dateiöffnungsvorgang bedeutet, dass der vom Benutzer angegebenen Datei ein FILE-Strukturbereich im Speicher zugewiesen wird und der Zeiger der Struktur in Zukunft an das Benutzerprogramm zurückgegeben wird. Das Benutzerprogramm kann diesen FILE-Zeiger verwenden, um den angegebenen Dateizugriffsvorgang zu implementieren. Bei Verwendung der Öffnungsfunktion müssen der Dateiname und der Dateibetriebsmodus (Lesen, Schreiben oder Lesen/Schreiben) angegeben werden.
Wenn der Dateiname nicht vorhanden ist, bedeutet dies, dass er erstellt wird (nur zum Schreiben von Dateien). für Beim Lesen der Datei tritt ein Fehler auf) und zeigt den Dateizeiger auf den Anfang der Datei. Wenn bereits eine Datei mit demselben Namen vorhanden ist, löschen Sie die Datei. Wenn keine Datei mit demselben Namen vorhanden ist, erstellen Sie die Datei und zeigen Sie mit dem Dateizeiger auf den Anfang der Datei.
fopen(char *filename,char *type);
wobei *filename
der Dateinamenzeiger der zu öffnenden Datei ist, normalerweise dargestellt durch den Dateinamen in doppelten Anführungszeichen oder den durch doppelte Backslashes getrennten Pfadnamen. Der Parameter *type
gibt die Operationsmethode zum Öffnen der Datei an. Die verfügbaren Betriebsmethoden sind wie folgt:
bedeutet „r“ öffnet, schreibgeschützt;
„w“ öffnet den Dateizeiger zeigt auf den Anfang. , schreibe nur
„a“ öffnet, zeigt auf das Ende der Datei, hängt an die vorhandene Datei an; 🎜>„rb“ öffnet eine Binärdatei, schreibgeschützt;
„wb“ öffnet eine Binärdatei, schreibgeschützt; „ab“ öffnet eine Binärdatei, hängt ;
„r+“ Öffnet eine vorhandene Datei im Lese-/Schreibmodus
“w+“ Erstellen Sie eine vorhandene Datei im Lese-/Schreibmodus. Neue Textdatei.
„a+“ öffnet eine Datei zum Lesen/Schreiben und Anhängen „rb+“ öffnet es zum Lesen/Schreiben. Öffnen Sie eine Binärdatei im Schreibmodus
„wb+“ erstellt eine neue Binärdatei im Lese-/Schreibmodus; 🎜>
„ab+“ zum Öffnen einer Binärdatei im Lese-/Schreibmodus zum Anhängen;2. Schließen Sie die Dateifunktion fclose()
int fclose(FILE *stream);
#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; }
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);Die Funktion liest ein Zeichen in der Datei, auf die der Stream-Zeiger zeigt, zum Beispiel: ch=fgetc(fp); liest ein Zeichen in der Datei, auf die der Stream-Zeiger zeigt fp und zuweisen Geben Sie ch an. Wenn der Dateizeiger auf das Ende der Datei zeigt, wird das Dateiende-Flag EOF angetroffen (der entsprechende Wert ist -1). Die Funktion gibt -1 zurück an ch, was in Programmen häufig überprüft wird. Ob der Rückgabewert dieser Funktion -1 ist, wird verwendet, um festzustellen, ob das Ende der Datei gelesen wurde und ob fortgefahren werden soll.
#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; }
Dieses Programm öffnet die Datei 123.txt im schreibgeschützten Modus. Beim Ausführen der while-Schleife bewegt sich der Dateizeiger bei jeder Schleife um eine Zeichenposition zurück. Verwenden Sie die Funktion fgetc(), um das durch den Dateizeiger angegebene Zeichen in die Variable ch einzulesen, und verwenden Sie dann die Funktion fputc(), um es auf dem Bildschirm anzuzeigen geschlossen. Das obige Programm verwendet die Funktion fputc(), die den Wert der Zeichenvariablen ch in die durch den Stream-Zeiger angegebene Datei schreibt. Da der Stream-Zeiger den FILE-Zeiger stdout der Standardausgabe (Anzeige) verwendet, werden die gelesenen Zeichen angezeigt auf dem Monitor. Ein weiteres Beispiel: fputc(ch,fp); Diese Funktion führt die Struktur aus und sendet das durch ch dargestellte Zeichen an die Datei, auf die der Stream-Zeiger fp zeigt.
In TC entspricht putc() fputc() und getc() entspricht fgetc(). putchar(c) entspricht fputc(c,stdout); getchar() entspricht fgetc(stdin). Beachten Sie, dass die Verwendung von char ch hier eigentlich unwissenschaftlich ist, da bei der endgültigen Beurteilung der Endmarke ch! = EOF betrachtet wird und der Wert von EOF -1 beträgt, was offensichtlich nicht mit char vergleichbar ist. Daher definieren wir bestimmte Verwendungen als
.#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). Funktionen zum Lesen und Schreiben von Zeichenfolgen in Dateien
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视频教程
Das obige ist der detaillierte Inhalt vonWas sind die Lese- und Schreibvorgänge für Dateien in der Sprache C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!