Konstanten sind starr. Sie ändern sich nicht. Das Leben ist nicht so und das sollten Ihre Testprogramme auch nicht sein. Wenn Sie C lernen, werden fest codierte Zahlen wie 5 und 7 schnell langweilig. Sie wollen Interaktion. Sie möchten, dass der Computer darauf wartet, dass Sie etwas eingeben.
Geben Sie „scanf“ ein.
Es ist die andere Hälfte der „printf“-Geschichte. Während „printf“ Daten auf den Bildschirm schiebt, ruft „scanf“ Daten von der Tastatur ab. Es ist nicht das robusteste Tool in der C-Standardbibliothek, aber für einfache Konsoleneingaben erledigt es die Aufgabe, ohne dass eine Abhängigkeit von einem Drittanbieter erforderlich ist.
So nehmen Sie ein statisches Skript und machen es dynamisch.
Der Kodex
Kopieren Sie dies. Führen Sie es aus. Geben Sie Zahlen ein, wenn Sie dazu aufgefordert werden.
„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;
}
„
Aufschlüsselung von „scanf“.
Die Magie geschieht in diesen beiden Zeilen:
scanf("%d", &a);
scanf: Der Funktionsname. Abkürzung für „formatierte Eingabe scannen“."%d": Der Formatbezeichner. Es weist „scanf“ an, eine Ganzzahl zu erwarten. Wenn Sie einen Float lesen würden, würden Sie „%f“ verwenden.&a: Das ist der kritische Teil. Sie übergeben nicht den Wert von „a“. Sie übergeben die Adresse von „a“.
Stellen Sie sich das so vor: „printf“ muss wissen, was sich in der Variablen befindet. „scanf“ muss wissen, wo die Daten abgelegt werden sollen. Der Operator „&“ stellt diese Speicheradresse bereit. Überspringen Sie das kaufmännische Und, sonst kommt es zum Absturz. Oder noch schlimmer: Sie erhalten eine Warnung, die wie Kauderwelsch aussieht, und eine Variable, die sich nicht ändert.
Wie es in der Praxis funktioniert
Wenn Sie das Programm ausführen:
- Das Terminal druckt: „Geben Sie den ersten Wert ein:“.
- Der Cursor blinkt. Es wartet. Sie bleiben hier hängen, bis Sie etwas eingeben und die Eingabetaste drücken.
- Sie geben „5“ ein. Sie drücken die Eingabetaste.
- „scanf“ greift nach „5“, wandelt die Zeichenfolge „5“ in den ganzzahligen Wert 5 um und speichert ihn an der Speicheradresse „&a“.
- Die gleiche Schleife wird für den zweiten Wert durchgeführt.
Dann kommt die Mathematik. c = a + b;. Einfache Ergänzung.
Abschließend zeigt „printf“ das Ergebnis an. Beachten Sie jedoch die Formatzeichenfolge: printf("%d + %d = %d\n", a, b, c);. Sie fügen die Variablen wieder in die Zeichenfolge ein. So erstellen Sie eine lesbare Ausgabe.
Warum das wichtig ist
Die meisten modernen Anwendungen verwenden keine Konsoleneingabe. Sie geben keine Befehle in eine Blackbox für Ihren Webbrowser oder Ihren Bildbearbeitungsprogramm ein. Das Verständnis dieses Flusses ist jedoch von grundlegender Bedeutung.
Eingabe -> Prozess -> Ausgabe.
Das ist die Grundschleife aller Software. `
Wie scanf mit Speicheradressen umgeht
Wenn Sie diesen Code ausführen, liegt der Unterschied zwischen Erfolg und einem Laufzeitabsturz bei einem Zeichen. Insbesondere das kaufmännische Und-Zeichen („&“) vor den Variablen „a“ und „b“.
Dies ist der Adressoperator. Es teilt „scanf“ genau mit, wo im Speicher die empfangenen Eingaben gespeichert werden sollen. Ohne sie kennt „scanf“ den Speicherort der Variablen nicht. Es erhält lediglich einen Wert, der zum Zurückspeichern von Daten im Programm unbrauchbar ist. Wenn Sie es weglassen, wird das Programm nicht kompiliert oder stürzt sofort nach der Ausführung ab. Sie benötigen diesen Operator für „char“, „int“, „float“ und Strukturtypen.
Versuchen Sie es zu entfernen. Beobachten Sie, was passiert. Es ist eine schmerzhafte, aber notwendige Lektion darüber, wie C mit dem Gedächtnis umgeht.
Die printf-Ausgabe beherrschen
„printf“ ist Ihr Fenster für den Benutzer. Es sendet Daten an die Standardausgabe. Die einfachste Version ist unkompliziert.
„c
printf(“Hallo”);
„
Dies gibt das Wort „Hallo“ aus. Sonst nichts. Kein Zeilenumbruch. Der Cursor bleibt direkt hinter dem „o“.
Fügen Sie ein Zeilenumbruchzeichen hinzu.
„c
printf(“Hallo\n”);
„
Nun geht die Ausgabe in die nächste Zeile. Das „\n“ ist ein Wagenrücklauf. Es ist für eine lesbare Konsolenausgabe unerlässlich.
Variablen verändern das Spiel. Sie können nicht einfach einen Variablennamen drucken, wie Sie es in Python oder JavaScript tun. Sie müssen einen Platzhalter verwenden.
„c
printf(“%d”, b);
„
Das „%d“ ist ein Platzhalter. Es wird zur Laufzeit durch den ganzzahligen Wert von „b“ ersetzt. So geht C mit der dynamischen Ausgabe um.
Sie können Text und Variablen mischen. Eine umständliche Möglichkeit besteht darin, mehrere Drucke zu verketten.
„c
printf(“Die Temperatur ist”);
printf(“%d”, b);
printf(” Grad\n”);
„
Es funktioniert. Es ist auch ausführlich. Der sauberere Ansatz bettet alles in eine Zeichenfolge ein.
„c
printf(“Die Temperatur beträgt %d Grad\n”, b);
„
Mehrere Werte funktionieren auch. Halten Sie die Platzhalter einfach an den Argumenten ausgerichtet.
„c
printf(“%d + %d = %d\n”, a, b, c);
„
Die Reihenfolge ist wichtig. Das erste „%d“ wird „a“ zugeordnet. Der zweite zu „b“. Das dritte zu „c“. Wenn man sie vertauscht, ist die Rechnung falsch. Wenn Sie eines verpassen, ist das Verhalten undefiniert. Anzahl und Typ der Operatoren in der Formatzeichenfolge müssen genau mit den Parametern übereinstimmen.
Typspezifische Platzhalter
C ist streng in Bezug auf Typen. Sie können nicht für alles denselben Platzhalter verwenden. Sie müssen den Datentyp mit dem Formatbezeichner abgleichen.
- Verwenden Sie %d für int (ganzzahlige Werte).
- Verwenden Sie %f für float (Gleitkommazahlen).
- Verwenden Sie %c für char (einzelne Zeichen).
- Verwenden Sie %s für Zeichenketten (Arrays von Zeichen).
Wenn Sie „%d“ für einen Float verwenden, erhalten Sie eine Müllausgabe. Wenn Sie „%s“ für ein int verwenden, stürzt das Programm wahrscheinlich ab. Präzision ist hier nicht optional.
Ausführlichere Informationen zu diesen Spezifizierern finden Sie im UNIX-Handbuch. Geben Sie „man 3 printf“ ein. Andere Compiler stellen eine ähnliche Dokumentation bereit. Es lohnt sich zu lesen.
Häufige Fallstricke, die es zu vermeiden gilt
C-Compiler sind hilfreich, aber sie sind keine Gedankenleser. Du wirst Fehler machen. Hier erfahren Sie, wie Sie die häufigsten vermeiden.
- Groß- und Kleinschreibung : C unterscheidet zwischen Groß- und Kleinschreibung. „Printf“ oder „PRINTF“ schlägt fehl. Es muss „printf“ sein. Gleiches gilt für Variablennamen und Funktionsaufrufe.
- Fehlender Adressoperator : Das Vergessen des „&“ in „scanf“ ist ein häufiger Fehler. Es führt zu einem sofortigen Laufzeitfehler. Schließen Sie es immer für primitive Typen ein.
- Nicht übereinstimmende Parameter : Zu viele oder zu wenige Argumente in „printf“ oder „scanf“ führen zu Fehlern. Die Formatzeichenfolge bestimmt die Struktur. Bleib dabei.
- Nicht deklarierte Variablen : Sie müssen eine Variable deklarieren, bevor Sie sie verwenden können. C leitet keine Typen ab. Sie definieren „int a;“, bevor Sie „a“ drucken können.
Diese Fehler wiederholen sich. Sie lassen sich auch leicht reparieren, sobald Sie das Muster erkannt haben.




























