Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

Eingabe und Ausgabe in C meistern: scanf, printf & Co.

Unter Eingabe (Input) versteht man das Zuführen von Daten in ein Programm. Eingabe kann als Datei oder über die Kommandozeile erfolgen. C bietet eingebaute Funktionen zum Lesen der Eingabe und Übergeben an das Programm.

Unter Ausgabe (Output) versteht man das Anzeigen von Daten auf Bildschirm, Drucker oder in Dateien. C bietet eingebaute Funktionen zur Ausgabe auf dem Bildschirm und zum Speichern in Text- oder Binärdateien.

Die Standard-Dateien

C behandelt alle Geräte als Dateien. Anzeigegeräte werden wie Dateien adressiert. Drei Dateien werden automatisch geöffnet, wenn ein Programm startet:

Standard-DateiDateizeigerGerät
Standard-EingabestdinTastatur
Standard-AusgabestdoutBildschirm
Standard-FehlerstderrBildschirm

Dateizeiger sind das Mittel, um auf Dateien zum Lesen und Schreiben zuzugreifen.

getchar() und putchar()

int getchar(void) liest das nächste verfügbare Zeichen vom Bildschirm (stdin) und gibt es als Integer zurück. Liest nur ein einzelnes Zeichen pro Aufruf. In einer Schleife können Sie mehrere Zeichen lesen.

int putchar(int c) schreibt das übergebene Zeichen auf den Bildschirm (stdout) und gibt dasselbe Zeichen zurück. Auch hier: ein Zeichen pro Aufruf, in Schleife für mehrere.

Beispiel

#include <stdio.h>
int main() {
    int c;
    printf("Eingabe: ");
    c = getchar();
    printf("\nSie haben eingegeben: ");
    putchar(c);
    return 0;
}

Ausgabe (Eingabe: "test"):

Eingabe: test
Sie haben eingegeben: t

Nur das erste Zeichen wird gelesen.

gets() und puts()

char *gets(char *s) liest eine Zeile von stdin in den Puffer s bis Newline oder EOF.

int puts(const char *s) schreibt den String s und ein nachfolgendes Newline nach stdout.

WICHTIG: gets() ist deprecated (veraltet) und unsicher (Pufferüberlauf). Verwenden Sie stattdessen fgets().

Beispiel (nur zur Demonstration)

#include <stdio.h>
int main() {
    char str[100];
    printf("Eingabe: ");
    gets(str);  // UNSICHER!
    printf("\nSie haben eingegeben: ");
    puts(str);
    return 0;
}

Sichere Alternative: fgets()

#include <stdio.h>
int main() {
    char str[100];
    printf("Eingabe: ");
    if (fgets(str, sizeof(str), stdin) != NULL) {
        // Entferne trailing newline falls vorhanden
        str[strcspn(str, "\n")] = '\0';
        printf("Sie haben eingegeben: %s\n", str);
    }
    return 0;
}

scanf() und printf()

int scanf(const char *format, ...) liest Eingabe von stdin und scannt gemäß dem Format.

int printf(const char *format, ...) schreibt Ausgabe nach stdout gemäß dem Format.

Das Format kann ein konstanter String sein, aber Sie können %s, %d, %c, %f, %lf, %p etc. verwenden für Strings, Integer, Zeichen, Float, Double, Pointer. Viele weitere Formatierungsoptionen sind verfügbar.

Einfaches Beispiel

#include <stdio.h>
int main() {
    char str[100];
    int i;
    printf("Eingabe (String und Integer): ");
    scanf("%s %d", str, &i);
    printf("\nEingegeben: %s %d\n", str, i);
    return 0;
}

Ausgabe (Eingabe: "sieben 7"):

Eingabe (String und Integer): sieben 7
Eingegeben: sieben 7

Hinweise zu scanf():

Format-Spezifizierer Übersicht

SpezifiziererTypBeschreibung
%d, %iintVorzeichenbehaftete Ganzzahl
%uunsigned intVorzeichenlose Ganzzahl
%ldlongLong Integer
%lldlong longLong Long Integer
%ffloatGleitkomma (6 Nachkommastellen default)
%lfdoubleDouble Precision
%Lflong doubleExtended Precision
%ccharEinzelnes Zeichen
%schar*String (bis Whitespace)
%pvoid*Zeigeradresse
%%-Literales % Zeichen

Formatierungs-Flags (printf)

%-10d   // Linksausgerichtet, Breite 10
%05d    // Mit führenden Nullen, Breite 5
%+d     // Immer Vorzeichen anzeigen
% d     // Leerzeichen bei positiven Zahlen
%#x     // 0x-Präfix für Hex
%.2f    // 2 Nachkommastellen

C Sprache

  1. C# Keywords und Identifiers verstehen: Regeln, Listen und Best Practices
  2. C# Grundlagen: Eingabe und Ausgabe Essentials
  3. C# Klassen & Objekte: Fundamente für robustes OOP
  4. C++-Eingabe und Ausgabe meistern: Ein praktischer Leitfaden
  5. C Eingabe und Ausgabe (I/O) meistern: scanf() und printf() erklärt
  6. Python I/O & Modul-Importe meistern: Praxisleitfaden
  7. Java Ein- und Ausgabe meistern: Drucken, Lesen und Formatieren Ihrer Daten
  8. C++ Streams meistern: cout, cin, cerr, clog – Praktischer Guide
  9. C-Konstanten und Literale: Typen, Verwendung & Best Practices
  10. C# Konstanten & Literale: Typen, Regeln und Best Practices