Heim  >  Artikel  >  Backend-Entwicklung  >  Was sind die Lese- und Schreibvorgänge für Dateien in der Sprache C?

Was sind die Lese- und Schreibvorgänge für Dateien in der Sprache C?

coldplay.xixi
coldplay.xixiOriginal
2020-07-27 13:44:174174Durchsuche

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)].

Was sind die Lese- und Schreibvorgänge für Dateien in der Sprache C?

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;
  • Wenn fopen() zum erfolgreichen Öffnen einer Datei verwendet wird, gibt die Funktion a zurück FILE-Zeiger. Wenn die Datei nicht geöffnet werden kann, wird ein NULL-Zeiger zurückgegeben.
  • 2. Schließen Sie die Dateifunktion fclose()

  • Nachdem der Dateivorgang abgeschlossen ist, müssen Sie ihn mit der Funktion fclose() schließen Geöffnete Datei wird geschrieben Wenn zum Zeitpunkt des Schreibens der Platz im Dateipuffer nicht durch geschriebenen Inhalt gefüllt ist, wird der Inhalt nicht in die geöffnete Datei geschrieben und geht verloren. Erst wenn die geöffnete Datei geschlossen wird, kann der im Dateipuffer verbleibende Inhalt in die Datei geschrieben werden, wodurch die Datei vollständig wird.

    Sobald die Datei geschlossen ist, wird außerdem die der Datei entsprechende FILE-Struktur freigegeben, wodurch die geschlossene Datei geschützt wird, da zu diesem Zeitpunkt keine Zugriffsvorgänge auf die Datei ausgeführt werden. Das Schließen einer Datei bedeutet auch, den Puffer der Datei freizugeben.
  • int fclose(FILE *stream);
  • Das bedeutet, dass diese Funktion die dem FILE-Zeiger entsprechende Datei schließt und einen ganzzahligen Wert zurückgibt. Wenn die Datei erfolgreich geschlossen wurde, wird ein Wert von 0 zurückgegeben, andernfalls wird ein Wert ungleich Null zurückgegeben.

    #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. Dateien lesen und schreiben

(1). Funktion zum Lesen und Schreiben von Zeichen in der Datei (jeweils nur ein Zeichen in der Datei lesen und schreiben). Zeit):

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=&#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). 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn