Für den ersten Versuch ist es in Ordnung, Zahlen fest zu kodieren, aber echte Software muss auf die Eingaben der Leute reagieren. Das ursprüngliche Snippet verwendete Konstanten. Es ist statisch. Vorhersehbar. Langweilig.

Um ein Programm nützlich zu machen, müssen Sie zur Laufzeit Daten vom Benutzer abrufen. Dies machen Sie mit „scanf“. Es ist das Gegenstück zu „printf“. Während „printf“ Daten auf den Bildschirm schiebt, holt „scanf“ sie von der Tastatur ein.

So gehen Sie mit der grundlegenden Ganzzahleingabe in C um.

Erfassen von Benutzereingaben

Sie können nicht einfach eine Variable deklarieren und erwarten, dass sie Benutzerdaten auf magische Weise speichert. Sie müssen danach fragen. Sie müssen dem Computer auch mitteilen, wo diese Daten gespeichert werden sollen. Aus diesem Grund benötigt „scanf“ einen Zeiger (das „&“-Symbol). Wenn Sie das kaufmännische Und vergessen, stürzt das Programm ab oder schreibt Müll in den Speicher. Schließen Sie es immer für primitive Typen wie „int“ ein.

Betrachten Sie diese aktualisierte Logik:

  1. Variablen deklarieren, um die Eingabe und das Ergebnis zu speichern.
  2. Fordern Sie den Benutzer auf, damit er weiß, was er eingeben muss.
  3. Verwenden Sie „scanf“ mit dem richtigen Formatbezeichner („%d“ für Ganzzahlen).
  4. Führen Sie die Berechnung durch mit den gespeicherten Werten.
  5. Geben Sie das Ergebnis aus, indem Sie die Eingabevariablen in die Druckzeichenfolge mischen.

„c

int main() {
int a, b, c;

printf(“Geben Sie den ersten Wert ein:”);
scanf(“%d”, &a);

printf(“Geben Sie den zweiten Wert ein:”);
scanf(“%d”, &b);

c = a + b;
printf(“%d + %d = %d\n”, a, b, c);

0 zurückgeben;
}

Warum das wichtig ist

Der Übergang von Konstanten zu Variablen verändert alles. Das Programm ist kein gebrochener Rekord mehr. Es passt sich an. Sie können es einmal mit 5 und 7 ausführen. Sie können es erneut mit 100 und 200 ausführen. Die Logik bleibt dieselbe; die Daten ändern sich.

Dies ist die Grundlage interaktiver CLI-Anwendungen (Command Line Interface). Bevor Sie komplexe Tools erstellen können, müssen Sie verstehen, wie Sie Daten sicher in Ihre Variablen übertragen.

Wichtige Erkenntnisse

  • scanf benötigt einen Zeiger: Verwenden Sie immer den Adressenoperator (& ) vor Ihrem Variablennamen in scanf.
  • Formatbezeichner müssen übereinstimmen: Wenn Sie ein „int“ lesen, müssen Sie „%d“ verwenden. Die Verwendung von „%f“ für eine Ganzzahl führt zu undefiniertem Verhalten.
  • Eingabeaufforderungen sind entscheidend: Ohne eine klare Eingabeaufforderung wie „Geben Sie den ersten Wert ein:“ starrt der Benutzer auf einen blinkenden Cursor und fragt sich, ob das Programm eingefroren ist. Das ist es nicht. Es wartet nur.

Der Code funktioniert. Es ist einfach. Aber es ist funktional. Sie sind von einem statischen Skript zu einem dynamischen Tool übergegangen. Der nächste Schritt ist normalerweise die Fehlerbehandlung. Was passiert, wenn der Benutzer „Hallo“ anstelle einer Nummer eingibt? „scanf“ schlägt stillschweigend fehl und Ihre Variablen bleiben nicht initialisiert. Das ist ein Problem für einen anderen Tag.

Im Moment haben Sie ein Programm, das tatsächlich zuhört.

Input, Output und die Regeln des Engagements

Sie haben die Änderungen vorgenommen. Jetzt kompilieren. Führen Sie es aus. Wenn es abstürzt, geraten Sie nicht in Panik. Es hat wahrscheinlich ein kleines Syntaxdetail übersehen.

Nehmen Sie „scanf“. Es ahmt „printf“ in der Verwendung von Formatzeichenfolgen nach. Geben Sie „man scanf“ ein, wenn Sie das Kleingedruckte benötigen. Achten Sie jedoch auf das kaufmännische Und-Zeichen („&“) vor Variablen wie „a“ und „b“.

Dies ist der Adressoperator.

Es gibt die Speicheradresse der Variablen zurück. Es könnte jetzt verwirrend aussehen. Hinweise werden dies später klären. Befolgen Sie jedoch vorerst die Regel: Wenn Sie „scanf“ für ein „char“, „int“ oder „float“ verwenden, benötigen Sie „&“. Sie benötigen es auch für Strukturen.

Überspringen Sie das „&“? Sie erhalten einen Laufzeitfehler. Brechen Sie es absichtlich. Sehen Sie, was passiert. Nur so kann man sich daran erinnern, warum es wichtig ist.

Ausgabe präzise formatieren

Lassen Sie uns „printf“ genauer untersuchen. Fangen Sie einfach an.

printf("Hallo");

Dadurch wird das Wort „Hallo“ an die Standardausgabe gesendet. Sonst nichts. Kein Zeilenumbruch. Der Cursor bleibt direkt hinter dem „o“.

Fügen Sie nun eine neue Zeile hinzu.

printf("Hallo\n");

Das „\n“ löst einen Wagenrücklauf aus. Die Ausgabe endet in einer eigenen Zeile. Dies ist die Standarderwartung für eine saubere Konsolenausgabe.

Variablen erfordern Platzhalter. So geben Sie den Wert von „b“ aus:

printf("%d", b);

Das „%d“ ist ein Platzhalter. Wenn der Code ausgeführt wird, tauscht „printf“ ihn gegen den tatsächlichen ganzzahligen Wert von „b“.

Sie können Werte in Sätze einbetten. Sie könnten mehrere Anrufe verketten:

printf("Die Temperatur ist"); printf("%d", b); printf(" Grad\n");

Aber das ist langweilig. Der sauberere Ansatz kombiniert sie in einer Formatzeichenfolge:

printf("Die Temperatur beträgt %d Grad\n", b);

Mehrere Werte funktionieren auch.

printf("%d + %d = %d\n", a, b, c);

Hier ist die Falle. Die Anzahl der Platzhalter im Formatstring muss mit der Anzahl der darauf folgenden Variablen übereinstimmen. Genau.

Wenn Sie drei „%d“-Tags haben, benötigen Sie drei Parameter. Die Typen müssen übereinstimmen. Die Reihenfolge muss übereinstimmen. Stimmen diese nicht überein? Die Ausgabe wird Müll sein. Oder schlimmer noch, es wird abstürzen.

Passende Typen zu Platzhaltern

„printf“ verarbeitet die meisten Standard-C-Typen. Sie benötigen lediglich den richtigen Code.

  • int verwendet „%d“.
  • float verwendet „%f“.
  • char verwendet „%c“.
  • Zeichenketten verwenden „%s“.

Für tiefere Nuancen schauen Sie sich „man 3 printf“ auf einem UNIX-System an. Ihr spezifischer Compiler verfügt wahrscheinlich über ein Handbuch oder eine Hilfedatei, die Randfälle abdeckt.

Häufige Fallstricke

Neue Entwickler stolpern immer wieder darüber.

Die Groß-/Kleinschreibung ist streng. „printf“ ist Kleinbuchstabe. „Printf“ oder „PRINTF“ schlägt fehl.

scanf verlangt den Adressoperator (& ). Wenn Sie es vergessen, speichert das Programm Ihre Eingaben nicht korrekt.

Die Parameteranzahl ist wichtig. Zu viele oder zu wenige Argumente in „printf“ oder „scanf“ führen zu undefiniertem Verhalten.

Vor der Nutzung kommt die Erklärung. Sie können in C keinen Variablennamen verwenden, ohne ihn vorher zu deklarieren. Der Compiler muss vorher das Speicherlayout und den Speichertyp kennen.

Der Compiler rät nicht. Es erzwingt.