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.
| Standarddateien | Dateizeiger | Geräte |
|---|---|---|
| Standardeingabe | stdin | keyboard |
| Standardausgabe | stdout | Bildschirm |
| Standardfehler | stderr | Ihren 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
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.
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.
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
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
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
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
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 Fehler
EOF。
Funktionen:
Fügt kein Zeilenumbruchzeichen hinzu:
fputs()Es fügt nach der Ausgabe der Zeichenkette nicht automatisch einen Zeilenumbruch hinzu.Flexibler Ausgabestream:
fputs()Es kann in jeden Stream ausgeben, wie Standardausgabe, Dateien usw.
Beispiel
int main() {
char str[] = "Hello, World!";
fputs(str, stdout); // "Hello, World!" ohne Zeilenumbruch ausgeben
return 0;
}
Der Unterschied zwischen puts() und fputs()
| Funktionen | puts() | fputs() |
|---|---|---|
| Zeilenumbruch | Fügt am Ende der Zeichenkette automatisch ein Zeilenumbruchzeichen hinzu. | Fügt kein Zeilenumbruchzeichen hinzu |
| Ausgabestream | Kann nur an die Standardausgabe (Bildschirm) ausgeben. | Es kann an jeden Stream ausgeben (z. B. Dateien, Bildschirm) |
| Parameter | Erfordert nur ein String-Argument. | Erfordert ein String-Argument und ein Stream-Argument. |
| Rückgabewert | Gibt bei Erfolg einen nicht negativen Wert zurück und bei Fehler einen Rückgabewert.EOF | Gibt 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
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 auf
FILEZeiger 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ück
0, gibt bei einem Fehler zurückEOF。
Beispiel
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