fprintf()-Funktion in C

fprintf()-Funktion in C

Formatierte Dateieingabe und -ausgabe #

Bis zu diesem Punkt haben wir gesehen, wie Zeichen und Zeichenfolgen in und aus der Datei gelesen und geschrieben werden. In der realen Welt bestehen die Daten aus vielen verschiedenen Typen. In diesem Kapitel lernen wir, wie wir Daten unterschiedlicher Art formatiert ein- und ausgeben können. Wir verwenden formatierte Eingabe und Ausgabe, wenn wir Daten in einem bestimmten Format lesen oder schreiben möchten.

fprintf()-Funktion #

Syntax: int fprintf(FILE *fp, const char *format [, argument, ...] );

Die fprintf() Funktion ist dieselbe wie printf() aber anstatt Daten in die Konsole zu schreiben, schreibt es formatierte Daten in die Datei. Fast alle Argumente von fprintf() Funktion ist dieselbe wie printf() Funktion, außer dass es ein zusätzliches Argument hat, das ein Dateizeiger auf die Datei ist, in die die formatierte Ausgabe geschrieben wird. Bei Erfolg wird die Gesamtzahl der in die Datei geschriebenen Zeichen zurückgegeben. Bei einem Fehler wird EOF zurückgegeben .

Das folgende Programm demonstriert die Verwendung von fprintf() Funktion.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include<stdio.h>
#include<stdlib.h>

int main()
{
    FILE *fp;
    char name[50];
    int roll_no, chars, i, n;
    float marks;

    fp = fopen("records.txt", "w");

    if(fp == NULL)
    {
        printf("Error opening file\n");
        exit(1);
    }

    printf("Testing fprintf() function: \n\n");

    printf("Enter the number of records you want to enter: ");
    scanf("%d", &n);

    for(i = 0; i < n; i++)
    {
        fflush(stdin);
        printf("\nEnter the details of student %d \n\n", i +1);

        printf("Enter name of the student: ");
        gets(name);

        printf("Enter roll no: ");
        scanf("%d", &roll_no);

        printf("Enter marks: ");
        scanf("%f", &marks);

        chars = fprintf(fp, "Name: %s\t\tRoll no: %d\t\tMarks: %.2f\n",
            name, roll_no, marks);
       printf("\n%d characters successfully written to the file\n\n", chars);
    }

    fclose(fp);
    return 0;
}

Erwartete Ausgabe:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Testing fprintf() function:

Enter the number of records you want to enter: 5

Enter the details of student 1

Enter name of the student: Tina
Enter roll no: 1
Enter marks: 45

37 characters successfully written to the file

Enter the details of student 2

Enter name of the student: Nina
Enter roll no: 5
Enter marks: 89

37 characters successfully written to the file

Enter the details of student 3

Enter name of the student: Tim
Enter roll no: 2
Enter marks: 49

36 characters successfully written to the file

Enter the details of student 4

Enter name of the student: Jim
Enter roll no: 8
Enter marks: 41

36 characters successfully written to the file

Enter the details of student 5

Enter name of the student: King
Enter roll no: 9
Enter marks: 59

37 characters successfully written to the file

So funktioniert es:

In Zeile 6 wird eine Strukturzeigervariable fp vom Typ struct FILE.

deklariert

In Zeile 7 wird ein Array aus Zeichen name der Größe 50 deklariert.

In Zeile 8 werden vier Variablen nämlich roll_no, chars, i und n vom Typ int deklariert.

In Zeile 9 wird eine Variable markers vom Typ Float deklariert.

In Zeile 11 wird die Funktion fopen() mit zwei Argumenten aufgerufen, nämlich „records.txt“ und „w“. Bei Erfolg gibt es einen Zeiger auf die Datei records.txt zurück und öffnet die Datei records.txt im Nur-Schreib-Modus. Bei einem Fehler wird NULL zurückgegeben.

In Zeile 13-17 wird die if-Anweisung verwendet, um den Wert von fp zu testen. Wenn es NULL ist, gibt die printf()-Anweisung die Fehlermeldung aus und das Programm wird beendet. Andernfalls fährt das Programm mit der Anweisung nach der if-Anweisung fort.

In Zeile 19 gibt eine printf()-Anweisung „Testing fprintf() function:\n\n“ auf der Konsole aus.

In Zeile 21-22 fordert das Programm den Benutzer auf, die Anzahl der Schüler einzugeben, deren Datensätze er eingeben möchte.

In den Zeilen 24-41 fordert eine for-Schleife den Benutzer auf, die drei Informationen Name, Roll_Nr und Noten der jeweiligen Schüler einzugeben. In Zeile 26 leeren (entfernen) wir den Inhalt der Standardeingabe, diese Zeile ist notwendig, sonst liest die Funktion gets() in Zeile 30 das Zeilenumbruchzeichen (eingegeben, während die Anzahl der Schüler abgefragt wird) und wartet nicht auf den Benutzer um den Namen des Schülers einzugeben.

In Zeile 38 wird die Funktion fprintf() zusammen mit 5 Argumenten aufgerufen, um formatierte Daten in die Datei zu schreiben. Wenn die Daten erfolgreich in die Datei geschrieben wurden, gibt es die Anzahl der in die Datei geschriebenen Zeichen zurück, die dann der Variablen chars zugewiesen werden. In Zeile 40 gibt eine printf()-Anweisung die Gesamtzahl der Zeichen aus, die durch den vorherigen Aufruf der Funktion fprintf() in die Datei geschrieben wurden. Die Schleife fragt nach weiteren Datensätzen von Schülern, bis i

In Zeile 43 schließt die Funktion fclose() die Datei.