C-Programm zum Lesen einer Datei und Anzeigen ihres Inhalts

 C Programming >> C-Programmierung >  >> Tags >> File
C-Programm zum Lesen einer Datei und Anzeigen ihres Inhalts

Quicklinks

  • Wie liest man?
  • fgetc()
  • fgetc()-Beispiel
  • fgets()
  • fgets()-Beispiel

Schreiben Sie ein C-Programm, um eine Datei zu lesen und ihren Inhalt auf der Konsole anzuzeigen. So lesen Sie eine Datei und zeigen den Dateiinhalt auf der Konsole in der C-Programmierung an. In dieser Übung erkläre ich Ihnen, wie Sie mit fgetc() eine Datei zeichenweise lesen . Wie man eine Datei Zeile für Zeile mit fgets() liest .

Erforderliche Kenntnisse

Basic Input Output, Do While-Schleife, While-Schleife, Zeiger, Dateiverwaltung

Im vorherigen Beitrag habe ich erklärt, wie man FILE verwendet Zeiger, fopen() , fputs() und fclose() Funktion zum Erstellen und Schreiben von Daten in eine Datei.

In diesem Beitrag werden wir weitermachen und verschiedene Funktionen in der C-Programmierung kennenlernen, um Dateiinhalte auf der Konsole zu lesen und anzuzeigen.

Wie liest man Daten aus einer Datei?

Die C-Programmierung unterstützt vier vordefinierte Funktionen fgetc() , fgets() , fscanf() und fread() um Daten aus einer Datei zu lesen. Diese Funktionen sind in stdio.h definiert Header-Datei.

fgetc() - Wird verwendet, um einzelne Zeichen aus einer Datei zu lesen.
fgets() - Wird verwendet, um eine Zeichenfolge aus einer Datei zu lesen.
fscanf() - Verwenden Sie dies, um formatierte Eingaben aus einer Datei zu lesen.
fread() - Lesen Sie einen Block von Rohbytes aus einer Datei. Wird zum Lesen von Binärdateien verwendet.

Schritt-für-Schritt-Beschreibungslogik zum Lesen einer Datei und Anzeigen des Dateiinhalts.

  • Öffnen Sie eine Datei mit fopen() Funktion und speichern Sie ihre Referenz in einem FILE Zeiger sagen fPtr .
  • Lesen Sie Inhalt aus einer Datei mit einer dieser Funktionen fgetc() , fgets() , fscanf() oder fread() .
  • Schließen Sie die Datei abschließend mit fclose(fPtr) .

In diesem Beitrag werde ich erklären, wie man eine Datei mit fgetc() liest und fgets() . Ich werde separat erklären, wie man formatierte Eingabe- und Binärdateien liest.

Wie liest man eine Datei Zeichen für Zeichen mit fgetc()?

int fgetc(FILE * stream);
  • Die Funktion akzeptiert Zeiger auf FILE Typ, Quelle Stream zu lesen.
  • Bei jedem erfolgreichen Lesevorgang wird das aus stream gelesene Zeichen (ASCII-Wert) zurückgegeben und Leseposition zum nächsten Zeichen vorrücken.

    Es gibt eine Konstante EOF zurück (-1) bei erfolglosem Lesen oder wenn kein Inhalt mehr zum Lesen vorhanden ist.

Programm zum zeichenweisen Lesen einer Datei mit fgetc()?

/**
 * C program to read a file and display file contents character by character using fgetc() 
 */

#include <stdio.h>
#include <stdlib.h>


int main()
{
    /* File pointer to hold reference to our file */
    FILE * fPtr;

    char ch;


    /* 
     * Open file in r (read) mode. 
     * "data/file1.txt" is complete file path to read
     */
    fPtr = fopen("data/file1.txt", "r");


    /* fopen() return NULL if last operation was unsuccessful */
    if(fPtr == NULL)
    {
        /* Unable to open file hence exit */
        printf("Unable to open file.\n");
        printf("Please check whether file exists and you have read privilege.\n");
        exit(EXIT_FAILURE);
    }


    /* File open success message */
    printf("File opened successfully. Reading file contents character by character. \n\n");

    do 
    {
        /* Read single character from file */
        ch = fgetc(fPtr);

        /* Print character read on console */
        putchar(ch);

    } while(ch != EOF); /* Repeat this if last read character is not EOF */


    /* Done with this file, close file to release resource */
    fclose(fPtr);


    return 0;
}

Angenommen data/file1.txt enthält

Hurray!!! I learned to create file in C programming. I also learned to write contents to file. Next, I will learn to read contents from file on Codeforwin. Happy coding ;)

Ausgabe

File opened successfully. Reading file contents character by character.

Hurray!!! I learned to create file in C programming. I also learned to write contents to file. Next, I will learn to read contents from file on Codeforwin. Happy coding ;)

Wie liest man eine Datei Zeile für Zeile mit fgets()?

char * fgets(char * str, int num, FILE * stream);
  • Es akzeptiert drei Parameter, darunter str ist ein Zeiger auf ein Zeichen. Bei Erfolg str zeigt auf eine Zeichenfolge, die aus dem angegebenen Stream gelesen wurde .
  • Als nächstes num ist die maximale Anzahl an Zeichen, die aus stream gelesen werden können .
  • streamen ist ein Zeiger auf FILE Typ, der den zu lesenden Eingabestrom angibt.
  • Bei Erfolg setzt die Funktion str um auf das gelesene Zeichen zu zeigen und denselben str zurückzugeben . Bei einem Fehler wird str gesetzt bis NULL Zeiger und geben NULL zurück Zeiger.

Programm zum zeilenweisen Lesen einer Datei mit fgets()

/**
 * C program to read a file and display file contents line by line using fgets()
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define BUFFER_SIZE 1000


int main()
{
    /* File pointer to hold reference to our file */
    FILE * fPtr;

    char buffer[BUFFER_SIZE];
    int totalRead = 0;


    /* 
     * Open file in r (read) mode. 
     * "data/file2.txt" is complete file path to read
     */
    fPtr = fopen("data/file2.txt", "r");


    /* fopen() return NULL if last operation was unsuccessful */
    if(fPtr == NULL)
    {
        /* Unable to open file hence exit */
        printf("Unable to open file.\n");
        printf("Please check whether file exists and you have read privilege.\n");
        exit(EXIT_FAILURE);
    }


    /* File open success message */
    printf("File opened successfully. Reading file contents line by line. \n\n");


    /* Repeat this until read line is not NULL */
    while(fgets(buffer, BUFFER_SIZE, fPtr) != NULL) 
    {
        /* Total character read count */
        totalRead = strlen(buffer);


        /*
         * Trim new line character from last if exists.
         */
        buffer[totalRead - 1] = buffer[totalRead - 1] == '\n' 
                                    ? '\0' 
                                    : buffer[totalRead - 1];


        /* Print line read on cosole*/
        printf("%s\n", buffer);

    } 


    /* Done with this file, close file to release resource */
    fclose(fPtr);


    return 0;
}

Angenommen data/file2.txt enthält

Reading a file line by line.
--------------------------------------------
I love programming in C.
Learning programming on Codeforwin is easy.

Ausgabe

File opened successfully. Reading file contents line by line.

Reading a file line by line.
--------------------------------------------
I love programming in C.
Learning programming on Codeforwin is easy.

Empfohlene Programme zum Üben

  • Index der Übungen zum Umgang mit Dateien.
  • C-Programm zum Erstellen einer Datei und Schreiben von Daten in die Datei.
  • C-Programm zum Lesen von Zahlen aus einer Datei und Schreiben von geraden, ungeraden und Primzahlen in eine separate Datei.
  • C-Programm zum Anhängen von Daten an eine Datei.
  • C-Programm zum Vergleichen zweier Dateien.
  • C-Programm zum Kopieren von Inhalten von einer Datei in eine andere Datei.
  • C-Programm zum Lesen und Zusammenführen von zwei Dateien in einer einzigen Datei.

Viel Spaß beim Programmieren 😉