C Eingabe & Ausgabe

Wenn wirEingabeerwähnen, bedeutet das, einige Daten in das Programm einzugeben. Eingaben können aus einer Datei oder von der Kommandozeile kommen. Die C-Sprache bietet eine Reihe integrierter Funktionen, um gegebene Eingaben zu lesen und sie nach Bedarf in das Programm einzufügen.

Wenn wirAusgabeerwähnen, bedeutet das, einige Daten auf dem Bildschirm, auf dem Drucker oder in einer beliebigen Datei anzuzeigen. Die C-Sprache bietet eine Reihe integrierter Funktionen, um Daten auf dem Computerbildschirm auszugeben und Daten in Text- oder Binärdateien zu speichern.

Standarddateien

Die C-Sprache behandelt alle Geräte als Dateien. Geräte (wie Monitore) werden also genauso behandelt wie Dateien. Die folgenden drei Dateien werden automatisch geöffnet, wenn das Programm ausgeführt wird, um auf Tastatur und Bildschirm zuzugreifen.

StandarddateienDateizeigerGeräte
Standardeingabestdinkeyboard
StandardausgabestdoutBildschirm
StandardfehlerstderrIhren Bildschirm

Ein Dateizeiger ist eine Möglichkeit, auf Dateien zuzugreifen. In diesem Abschnitt wird erklärt, wie man Werte von der Tastatur einliest und wie man Ergebnisse auf dem Bildschirm ausgibt.

E/A (Ein-/Ausgabe) in der Sprache C verwendet normalerweiseprintf()undscanf()zwei Funktionen.

Die scanf()-Funktion wird verwendet, um von der Standardeingabe (Tastatur) zu lesen und zu formatieren, und die printf()-Funktion sendet formatierte Ausgabe an die Standardausgabe (Bildschirm).

printf()-Funktion

Die printf()-Funktion wird verwendet, um formatierte Daten an das Standardausgabegerät (normalerweise den Bildschirm) auszugeben.

Syntax:

int printf(const char *format, ...);

Parameter:

  • format: Formatzeichenfolge, gibt das Format der Ausgabe an.

  • ...: Variablenargumentliste, liefert die Daten, die gemäß den Formatbezeichnern in der Formatzeichenfolge ausgegeben werden sollen.

Beispiel

#include <stdio.h>// Zum Ausführen der printf()-Funktion wird diese Bibliothek benötigt int main() { printf("Beispiel"); // Inhalt in Anführungszeichen anzeigen return 0; }

Kompilieren Sie das obige Programm, das Ausgabeergebnis ist:

Example Tutorial

Beispielanalyse:

  • Alle C-Programme müssen diemain()-Funktion enthalten. Der Code beginnt beimain()Die Funktion beginnt mit der Ausführung.
  • printf()Wird für formatierte Ausgabe auf dem Bildschirm verwendet.printf()Die Funktion ist in"stdio.h"in der Header-Datei deklariert.
  • stdio.hist eine Header-Datei (Standard-Eingabe/Ausgabe-Header-Datei) und#includeist ein Präprozessorbefehl, der zum Einbinden von Header-Dateien verwendet wird. Wenn der Compiler aufprintf()bei Verwendung der Funktion trifft, falls nicht gefundenstdio.h-Header-Datei, tritt ein Kompilierungsfehler auf.
  • return 0;

%d wird verwendet, um Ganzzahlen zu formatieren und auszugeben.

#include <stdio.h> int main() { int testInteger = 5; printf("Number = %d", testInteger); return 0; }

Kompilieren Sie das obige Programm, das Ausgabeergebnis ist:

Number = 5

Verwenden Sie "%d" (Ganzzahl) in den Anführungszeichen der printf()-Funktion, um die Integer-Variable testInteger zu formatieren und sie auf dem Bildschirm auszugeben.

%f wird verwendet, um Gleitkommadaten zu formatieren und auszugeben.

#include <stdio.h> int main() { float f; printf("Geben Sie eine Zahl ein: "); // %f entspricht Gleitkommadaten scanf("%f",&f); printf("Wert = %f", f); return 0; }

scanf()-Funktion

Die scanf()-Funktion wird verwendet, um formatierte Eingaben vom Standardeingabegerät (normalerweise der Tastatur) zu lesen.

Syntax:

int scanf(const char *format, ...);

Parameter:

  • format: Formatzeichenfolge, legt das Format der Eingabe fest.

  • ...: Variable Argumentliste, stellt die Adressen der Variablen bereit, um die Eingabedaten basierend auf den Formatbezeichnern in der Formatzeichenfolge zu speichern.

Beispiel

#include <stdio.h>

int main() {
    int a;
    float b;
    printf("Geben Sie eine Ganzzahl und eine Gleitkommazahl ein: ");
    scanf("%d %f", &a, &b);
    printf("Sie haben eingegeben: %d und %.2f\n", a, b);
    return 0;
}

Führen Sie den obigen Code aus, und geben Sie dann ein:

10 3.14

Ausgabe:

You entered: 10 and 3.14

Zeicheneingabe/-ausgabe

getchar()- & putchar()-Funktionen

int getchar(void)Die Funktion liest das nächste verfügbare Zeichen vom Bildschirm und gibt es als ganze Zahl zurück. Diese Funktion liest jeweils nur ein einzelnes Zeichen. Sie können diese Methode in einer Schleife verwenden, um mehrere Zeichen vom Bildschirm zu lesen.

int putchar(int c)Die Funktion gibt ein Zeichen auf dem Bildschirm aus und gibt dasselbe Zeichen zurück. Diese Funktion gibt jeweils nur ein einzelnes Zeichen aus. Sie können diese Methode in einer Schleife verwenden, um mehrere Zeichen auf dem Bildschirm auszugeben.

Siehe das folgende Beispiel:

Beispiel

#include <stdio.h> int main( ) { int c; printf( "Geben Sie einen Wert ein :"); c = getchar( ); printf( "\nSie haben eingegeben: "); putchar( c ); printf( "\n"); return 0; }

Wenn der obige Code kompiliert und ausgeführt wird, wartet er darauf, dass Sie einen Text eingeben. Wenn Sie Text eingeben und die Eingabetaste drücken, fährt das Programm fort und liest nur ein einzelnes Zeichen, wie unten gezeigt:

$./a.out
Enter a value :example

You entered: r

String-Ein-/Ausgabe

gets() und fgets()-Funktionen

Die Funktion gets() wird verwendet, um eine Zeile einer Zeichenkette vom Standardeingabegerät zu lesen, aber sie wird nicht empfohlen, da sie leicht zu einem Pufferüberlauf führen kann. Es wird empfohlen, die Funktionfgets()zu verwenden.

Syntax:

char *fgets(char *str, int n, FILE *stream);

Parameter:

  • str: Zeiger auf ein Zeichenarray, das zum Speichern der gelesenen Zeichenkette verwendet wird.

  • n: Die maximale Anzahl der zu lesenden Zeichen (einschließlich des Nullzeichens\0)。

  • stream: Dateistream, normalerweise verwendet manstdinRepräsentiert die Standardeingabe.

Beispiel

#include <stdio.h>

int main() {
    char str[100];
    printf("Geben Sie eine Zeichenkette ein: ");
    fgets(str, sizeof(str), stdin);
    printf("Sie haben eingegeben: %s", str);
    return 0;
}

puts()-Funktion

Die puts()-Funktion wird verwendet, um eine Zeichenkette auf dem Standardausgabegerät auszugeben und fügt am Ende automatisch einen Zeilenumbruch hinzu.

Syntax:

int puts(const char *str);

Parameter:

  • str: die auszugebende Zeichenkette.

Rückgabewert:

  • Gibt bei Erfolg einen nicht negativen Wert zurück und bei Fehler einen Rückgabewert.EOF。

Beispiel

#include <stdio.h>

int main() {
    char str[] = "Hello, World!";
    puts(str);
    return 0;
}

Ausgabe:

Hello, World!

fputs()-Funktion

Die fputs()-Funktion wird verwendet, um eine Zeichenkette an einen angegebenen Stream auszugeben (z. B. Standardausgabe, eine Datei usw.), fügt jedoch nicht automatisch einen Zeilenumbruch am Ende der Zeichenkette hinzu.

Syntax:

int fputs(const char *str, FILE *stream);

Parameter:

  • str: die auszugebende Zeichenkette (ein Zeichenarray, das mit einem Null\0zeichen endet).

  • stream: Gibt den Ausgabestream an, der die Standardausgabe (stdout), Dateistreams usw.

Rückgabewert:

  • Gibt bei Erfolg einen nichtnegativen Wert zurück (normalerweise die Anzahl der ausgegebenen Zeichen).

  • Rückgabewert bei FehlerEOF。

Funktionen:

  1. Fügt kein Zeilenumbruchzeichen hinzu:fputs()Es fügt nach der Ausgabe der Zeichenkette nicht automatisch einen Zeilenumbruch hinzu.

  2. Flexibler Ausgabestream:fputs()Es kann in jeden Stream ausgeben, wie Standardausgabe, Dateien usw.

Beispiel

#include <stdio.h>

int main() {
    char str[] = "Hello, World!";
    fputs(str, stdout);  // "Hello, World!" ohne Zeilenumbruch ausgeben
    return 0;
}

Der Unterschied zwischen puts() und fputs()

Funktionenputs()fputs()
ZeilenumbruchFügt am Ende der Zeichenkette automatisch ein Zeilenumbruchzeichen hinzu.Fügt kein Zeilenumbruchzeichen hinzu
AusgabestreamKann nur an die Standardausgabe (Bildschirm) ausgeben.Es kann an jeden Stream ausgeben (z. B. Dateien, Bildschirm)
ParameterErfordert nur ein String-Argument.Erfordert ein String-Argument und ein Stream-Argument.
RückgabewertGibt bei Erfolg einen nicht negativen Wert zurück und bei Fehler einen Rückgabewert.EOFGibt bei Erfolg einen nicht negativen Wert zurück und bei Fehler einen Rückgabewert.EOF

scanf()- und printf()-Funktionen

int scanf(const char *format, ...)Die Funktion liest aus dem Standard-Eingabestreamstdinliest die Eingabe und durchsucht gemäß dem angegebenenformatdie Eingabe.

int printf(const char *format, ...)Die Funktion schreibt Ausgabe in den Standard-Ausgabestreamstdout und erzeugt Ausgabe gemäß dem angegebenen Format.

formatEs kann eine einfache konstante Zeichenkette sein, aber Sie können %s, %d, %c, %f usw. angeben, um jeweils Zeichenketten, Ganzzahlen, Zeichen oder Gleitkommazahlen auszugeben oder einzulesen. Es gibt viele weitere verfügbare Formatoptionen, die nach Bedarf verwendet werden können. Für vollständige Details können Sie in den Referenzhandbüchern dieser Funktionen nachschlagen. Nun wollen wir unser Verständnis anhand des folgenden einfachen Beispiels vertiefen:

Beispiel

#include <stdio.h> int main( ) { char str[100]; int i; printf( "Geben Sie einen Wert ein:"); scanf("%s %d", str, &i); printf( "\nSie haben eingegeben: %s %d ", str, i); printf("\n"); return 0; }

Wenn der obige Code kompiliert und ausgeführt wird, wartet er darauf, dass Sie einen Text eingeben. Wenn Sie Text eingeben und die Eingabetaste drücken, fährt das Programm fort und liest die Eingabe, wie unten gezeigt:

$./a.out
Enter a value :example 123

You entered: example 123 

Hier sollte beachtet werden, dass scanf() erwartet, dass das Eingabeformat dasselbe ist wie die von Ihnen angegebenen %s und %d, was bedeutet, dass Sie eine gültige Eingabe bereitstellen müssen, wie z. B. "string integer". Wenn Sie "string string" oder "integer integer" angeben, wird dies als ungültige Eingabe betrachtet. Darüber hinaus beendet scanf() beim Lesen einer Zeichenkette das Lesen, sobald es auf ein Leerzeichen trifft, daher sind "this is test" für scanf() drei Zeichenketten.


Datei-Eingabe und -Ausgabe

Die Sprache C bietet auch Datei-Eingabe-/Ausgabemöglichkeiten, mit denen Daten aus Dateien gelesen oder in Dateien geschrieben werden können.

fopen()-Funktion

Die Funktion fopen() wird verwendet, um eine Datei zu öffnen.

Syntax:

FILE *fopen(const char *filename, const char *mode);

Parameter:

  • filename: der Dateiname, der geöffnet werden soll.

  • mode: der Modus, in dem die Datei geöffnet werden soll, wie z. B."r"(Nur-Lesen),"w"(Nur-Schreiben),"a"(Anhängen), usw.

Rückgabewert:

  • Bei Erfolg wird ein Zeiger aufFILEZeiger auf das Objekt, und im Fehlerfall wird zurückgegebenNULL。

fclose()-Funktion

Die Funktion fclose() wird verwendet, um eine geöffnete Datei zu schließen.

Syntax:

int fclose(FILE *stream);

Parameter:

  • stream: zeigt aufFILEein Zeiger auf das Objekt.

Rückgabewert:

  • gibt bei Erfolg zurück0, gibt bei einem Fehler zurückEOF。

Beispiel

#include <stdio.h>

int main() {
    FILE *file;
    file = fopen("example.txt", "w");
    if (file != NULL) {
        fprintf(file, "Hello, world!\n");
        fclose(file);
    }

    char buffer[100];
    file = fopen("example.txt", "r");
    if (file != NULL) {
        fgets(buffer, sizeof(buffer), file);  // Eine ganze Zeile einlesen
        printf("Aus Datei gelesen: %s", buffer);  // fgets behält das Zeilenumbruchzeichen bei
        fclose(file);
    }
    return 0;
}

Inhalt ausgeben:

Read from file: Hello, world!
Weitere Erweiterungen