🏆 Letzte Unit von Kapitel 1 – Einstieg & Grundlagen · Danach: Kapitel 2 – Operatoren & Entscheidungen
Kapitel 1 · Abschluss Unit 5 von 5 Theorie + Übungen Dauer: ~45 Min.
Ömer
Ömer sagt:

Das ist die letzte Unit von Kapitel 1 – und ich habe sie für das Beste aufgespart! Mit scanf können Benutzer endlich selbst Werte eingeben. Deine Programme werden damit wirklich interaktiv. Das ist der Moment, wo es sich anfühlt, dass du wirklich programmierst! 🎮

Lernziele dieser Unit
printf vollständig verstehen scanf für Benutzereingaben Das &-Zeichen bei scanf Format-Zeichen kombinieren Interaktive Programme schreiben Typische scanf-Fehler kennen

🔄 Das Ein-/Ausgabe-Prinzip

Jedes interaktive Programm hat zwei Richtungen: Der Computer gibt etwas aus (Bildschirm) und nimmt etwas ein (Tastatur). In C übernehmen das zwei Funktionen aus <stdio.h>:

⌨️
Tastatur
scanf()
Dein C-Programm
main()
🖥️
Bildschirm
printf()

📢 printf – Ausgabe vertieft

Du kennst printf schon aus Unit 2. Jetzt schauen wir uns alle Möglichkeiten genauer an:

FormatTypBeispielAusgabe
%dintprintf("%d", 42);42
%ffloatprintf("%f", 3.14f);3.140000
%.2ffloat (2 Stellen)printf("%.2f", 3.14159f);3.14
%5dint (5 Stellen breit)printf("%5d", 42);   42
%ccharprintf("%c", 'A');A
%sString (Text)printf("%s", "Hallo");Hallo
%lfdoubleprintf("%.4lf", 3.14);3.1400
printf_demo.c C
#include <stdio.h>

int main() {
    int   punkte = 87;
    float schnitt = 2.375f;

    /* Einfache Ausgabe */
    printf("Punkte: %d\n", punkte);

    /* Zwei Nachkommastellen */
    printf("Schnitt: %.2f\n", schnitt);

    /* Mehrere Werte in einer Zeile */
    printf("Punkte: %d | Schnitt: %.1f\n", punkte, schnitt);

    return 0;
}
Ausgabe
Punkte: 87
Schnitt: 2.38
Punkte: 87 | Schnitt: 2.4

⌨️ scanf – Benutzereingabe lesen

scanf liest eine Eingabe vom Benutzer (Tastatur) und speichert sie in einer Variable. Die Syntax ist ähnlich wie bei printf – aber mit einem wichtigen Unterschied: dem &-Zeichen.

⚠️ Das &-Zeichen (Adressoperator)

Bei scanf muss vor dem Variablennamen ein & (kaufmännisches Und / Ampersand) stehen. Das & bedeutet: „Gib mir die Speicheradresse dieser Variable."

Warum? Weil scanf den eingegebenen Wert direkt in den Speicher der Variable schreiben muss – und dafür braucht es die Adresse, nicht nur den Wert.

scanf("%d", &alter); ✅ ← & ist nötig!
scanf("%d", alter); ❌ ← häufiger Fehler → undefiniertes Verhalten

Ausnahme: Bei Strings (char-Arrays) braucht man kein & – aber das lernen wir in Kapitel 5.

Syntax von scanf

scanf_syntax.c C
/* Allgemeine Form: */
scanf("Format-Zeichen", &variable);

/* Beispiele: */
int   alter;
float groesse;
char  note;

scanf("%d",  &alter);    // liest eine ganze Zahl
scanf("%f",  &groesse);  // liest eine Kommazahl
scanf("%c",  &note);    // liest ein einzelnes Zeichen

🎮 Erstes interaktives Programm

Hier siehst du printf und scanf zusammen im Einsatz – das Programm fragt den Benutzer nach seinem Namen (Anfangsbuchstaben) und Alter:

begruessung.c C
#include <stdio.h>

int main() {
    char anfang;
    int  alter;

    printf("Anfangsbuchstabe deines Namens: ");
    scanf(" %c", &anfang);   // Leerzeichen vor %c wichtig!

    printf("Dein Alter: ");
    scanf("%d", &alter);

    printf("\nHallo, %c! Du bist %d Jahre alt.\n", anfang, alter);
    return 0;
}
Interaktive Ein-/Ausgabe
Anfangsbuchstabe deines Namens: Ö ← Benutzer tippt
Dein Alter: 17 ← Benutzer tippt
Hallo, Ö! Du bist 17 Jahre alt.

🧮 Erweitertes Beispiel: Rechner

Dieses Programm liest zwei Zahlen vom Benutzer und gibt Summe und Produkt aus:

mini_rechner.c C
#include <stdio.h>

int main() {
    int a, b;   // zwei Variablen auf einmal deklarieren

    printf("Erste Zahl:  ");
    scanf("%d", &a);

    printf("Zweite Zahl: ");
    scanf("%d", &b);

    printf("\n--- Ergebnis ---\n");
    printf("%d + %d = %d\n", a, b, a + b);
    printf("%d * %d = %d\n", a, b, a * b);

    return 0;
}
Ausgabe
Erste Zahl: 8
Zweite Zahl: 5
--- Ergebnis ---
8 + 5 = 13
8 * 5 = 40

⚠️ Typische scanf-Fehler

FehlerProblemRichtig
scanf("%d", alter);& vergessen → Absturzscanf("%d", &alter);
scanf("%d", &pi); bei floatFalsches Formatscanf("%f", &pi);
scanf("%c", &c); nach scanfNewline im Pufferscanf(" %c", &c); (Leerzeichen!)
printf vergessen vor scanfBenutzer weiß nicht was eingebenImmer zuerst printf mit Aufforderung

⚠️ Leerzeichen vor %c in scanf

Wenn du nach einem scanf("%d", ...) noch ein scanf("%c", ...) schreibst, kann der Zeilenumbruch (Enter-Taste) des vorherigen Einlesens im Puffer stecken. Das Leerzeichen " %c" springt alle Leerzeichen und Zeilenumbrüche über:

scanf("%d", &alter); ← liest Zahl, lässt \n im Puffer
scanf(" %c", &note); ← Leerzeichen springt über \n ✅

✏️ Übungen

Übung 1

scanf-Aufrufe ergänzen

Fülle die Lücken aus – verwende den richtigen Format-Spezifizierer und vergiss das & nicht:

C – LÜCKEN FÜLLEN
int   punkte;
float temp;
char  klasse;

scanf("___", ___punkte);    // Ganze Zahl lesen
scanf("___", ___temp);      // Kommazahl lesen
scanf(" ___", ___klasse);    // Zeichen lesen
Format: %d für int · %f für float · %c für char · und immer & vor den Variablennamen!
Übung 2

Programmablauf beschreiben

Beschreibe in Worten, was dieses Programm tut – Schritt für Schritt:

C
#include <stdio.h>
int main() {
    int x, y, summe;
    printf("Zahl 1: "); scanf("%d", &x);
    printf("Zahl 2: "); scanf("%d", &y);
    summe = x + y;
    printf("Summe: %d\n", summe);
    return 0;
}

Schritt 1:

Schritt 2:

Schritt 3:

Schritt 4:

Übung 3

Fehler finden

In diesem Programm sind 3 Fehler. Finde und korrigiere sie:

C – FEHLER DRIN!
#include <stdio.h>
int main() {
    int alter;
    float groesse;
    printf("Dein Alter: ");
    scanf("%f", alter);
    printf("Deine Groesse: ");
    scanf("%d", &groesse);
    printf("Alter=%d, Groesse=%.2f\n", groesse, alter);
    return 0;
}

Fehler 1:

Fehler 2:

Fehler 3:

Übung 4 – Abschlussprogramm

Interaktives Schülerprofil

Schreibe ein vollständiges C-Programm, das den Benutzer nach folgenden Daten fragt und diese danach schön formatiert ausgibt:

#include <stdio.h> int main() { /* Variablen deklarieren */ /* Eingaben einlesen */ /* Profil ausgeben */ return 0; }
Vergiss nicht: printf() vor jedem scanf() als Aufforderung! Und Leerzeichen vor %c bei scanf.

💡 Live-Compiler Tipp: Klicke auf ▶ Eingabe (stdin) unter dem Code und gib deine Testwerte ein – eine Zeile pro Wert. Dann ▶ Ausführen!
Übung 5 – Bonus

Mini-Taschenrechner

Schreibe einen Taschenrechner, der zwei Zahlen vom Benutzer einliest und Summe, Differenz, Produkt und Quotient ausgibt. Teste mit verschiedenen Eingaben über das Eingabe (stdin)-Feld!

#include <stdio.h> int main() { float a, b; printf("Erste Zahl: "); scanf("%f", &a); printf("Zweite Zahl: "); scanf("%f", &b); printf("\n--- Ergebnisse ---\n"); printf("%.2f + %.2f = %.2f\n", a, b, a + b); /* TODO: Differenz, Produkt und Quotient ausgeben */ /* BONUS: Was passiert wenn b = 0? Division durch 0! */ return 0; }
Eingabe-Beispiel (zwei Zeilen ins stdin-Feld): 10 Enter 3 – und beobachte alle vier Ergebnisse. Was passiert bei 10 und 0?
🏆 Kapitel 1 abgeschlossen!
Du hast alle 5 Units von „Einstieg & Grundlagen" gemeistert:
✅ Unit 1 – Was ist C? ✅ Unit 2 – Hello World ✅ Unit 3 – Aufbau ✅ Unit 4 – Variablen ✅ Unit 5 – Ein-/Ausgabe
Weiter mit: Kapitel 2 – Operatoren & Entscheidungen
Unit 6: Rechenoperatoren und Ausdrücke