C - Benutzer-Eingabe: Ein Anfängerleitfaden

Hallo da draußen, zukünftige Programmierer! Heute tauchen wir in die aufregende Welt der Benutzer-Eingabe in der C-Programmierung ein. Als dein freundlicher Nachbarschafts-Computerlehrer bin ich hier, um dich auf dieser Reise Schritt für Schritt zu führen. Also, hol dir eine Tasse Kaffee (oder dein Lieblingsgetränk) und los geht's!

C - User Input

Warum brauchen wir Benutzer-Eingabe in C?

Stell dir vor, du erstellst ein Taschenrechner-Programm. Es wäre ziemlich nutzlos, wenn es nur 2 und 2 addieren könnte, oder? Genau hier kommt die Benutzer-Eingabe ins Spiel! Benutzer-Eingabe ermöglicht es unseren Programmen, dynamisch und interaktiv zu sein. Anstatt immer dasselbe zu tun, können unsere Programme auf verschiedene Eingaben reagieren und unterschiedliche Ergebnisse liefern.

Der magische Zauberstab: Die scanf()-Funktion

In C ist unser magischer Zauberstab zur Erfassung von Benutzer-Eingaben die scanf()-Funktion. Es ist wie ein Netz, das die Informationen einfängt, die Benutzer in das Programm eingeben. Lassen wir es auseinandernehmen:

#include <stdio.h>

int main() {
int number;
printf("Gib eine Zahl ein: ");
scanf("%d", &number);
printf("Du hast eingegeben: %d\n", number);
return 0;
}

In diesem Beispiel:

  1. Deklarieren wir eine int-Variable namens number.
  2. Fordern wir den Benutzer auf, eine Zahl einzugeben.
  3. Nutzen wir scanf() zur Erfassung der Eingabe und Speicherung in number.
  4. Schließlich geben wir die Zahl wieder an den Benutzer zurück.

Das %d in scanf() ist wie das Sagen, "Hey, erwarte hier eine Ganzzahl!" Das & vor number bedeutet, "Speichere die Eingabe an dieser Speicheradresse."

Arten der Eingabe: Lasst uns erkunden!

Ganzzahl-Eingabe

Wir haben bereits gesehen, wie man Ganzzahlen eingibt. Lassen wir uns ein komplexeres Beispiel ansehen:

#include <stdio.h>

int main() {
int age, year;
printf("Gib dein Alter und Geburtsjahr ein: ");
scanf("%d %d", &age, &year);
printf("Du bist %d Jahre alt und bist im Jahr %d geboren.\n", age, year);
return 0;
}

Hier fangen wir zwei Ganzzahlen auf einmal ab! Der space zwischen %d %dweist scanf() darauf hin, dass ein space oder ein Zeilenumbruch zwischen den Eingaben erwartet wird.

Fließkommazahl-Eingabe

Was ist, wenn wir Dezimalzahlen wollen? Die Fließkommazahl!

#include <stdio.h>

int main() {
float height, weight;
printf("Gib deine Körpergröße (m) und Gewicht (kg) ein: ");
scanf("%f %f", &height, &weight);
printf("Du bist %.2f Meter groß und wiegst %.1f kg.\n", height, weight);
return 0;
}

Beachte das %f für Fließkommazahlen. In der Ausgabe steuern .2f und .1f die Dezimalstellen.

Zeichen-Eingabe

Manchmal brauchen wir nur ein einzelnes Zeichen:

#include <stdio.h>

int main() {
char grade;
printf("Gib deine Note (A-F) ein: ");
scanf(" %c", &grade);  // Beachte den space vor %c
printf("Du hast eine %c. ", grade);

if (grade == 'A' || grade == 'B')
printf("Großartig!\n");
else if (grade == 'C')
printf("Nicht schlecht, weiter verbessern!\n");
else
printf("Lass uns beim nächsten Mal härter arbeiten!\n");

return 0;
}

Der space vor %c ist entscheidend! Es weist scanf() an, überflüssige Leerzeichen (wie Zeilenumbrüche) zu überspringen, bevor das Zeichen gelesen wird.

String-Eingabe

Last but not least, fangen wir eine ganze Zeichenkette ab:

#include <stdio.h>

int main() {
char name[50];  // Array zum Speichern der Zeichenkette
printf("Wie heißt du? ");
scanf("%49s", name);  // %49s um einen Buffer Overflow zu verhindern
printf("Hallo, %s! Willkommen bei der C-Programmierung!\n", name);
return 0;
}

Einige Dinge zu beachten:

  1. Wir verwenden ein Character-Array, um eine Zeichenkette zu speichern.
  2. Vor name steht kein & in scanf(), weil Array-Namen bereits Adressen sind.
  3. %49s begrenzt die Eingabe auf 49 Zeichen, um einen Buffer Overflow zu verhindern.

Die scanf()-Funktion: Ein genaueres Blick

Lassen wir die verschiedenen Format-Spezifikatoren zusammenfassen, die wir gesehen haben:

Format-Spezifikator Daten-Typ
%d Ganzzahl
%f Fließkommazahl
%c Zeichen
%s Zeichenkette

Denke daran, scanf() ist mächtig, aber kann trickreich sein. Überprüfe immer, ob die Eingabe erfolgreich war:

#include <stdio.h>

int main() {
int num;
printf("Gib eine Zahl ein: ");
if (scanf("%d", &num) == 1) {
printf("Du hast eingegeben: %d\n", num);
} else {
printf("Ungültige Eingabe!\n");
}
return 0;
}

Dies überprüft, ob scanf() erfolgreich einen Wert gelesen hat (== 1).

Abschluss

Puh! Wir haben heute viel behandelt. Von Ganzzahlen bis zu Zeichenketten haben wir die Möglichkeiten unserer C-Programme interaktiv zu gestalten erkundet. Erinnere dich daran, Übung macht den Meister. Versuche, verschiedene Arten der Eingabe in deinen Programmen zu kombinieren. Vielleicht erstellst du ein einfaches Spiel, das nach dem Namen, Alter und Lieblingszahl eines Spielers fragt?

Programmieren ist wie das Lernen einer neuen Sprache - je öfter du es verwendest, desto natürlicher wird es. Also, weiter codieren, weiter experimentieren und vor allem: Spaß haben! Wenn du jemals feststeckst, denke daran, dass jeder Programmierer einmal ein Anfänger war. Habe keine Angst, Fragen zu stellen und Hilfe zu suchen.

Bis zum nächsten Mal, viel Spaß beim Coden!

Credits: Image by storyset