C/C++-Übungen für Einsteiger

Wörter in einem Satz mit C und C++ zählen

In dieser Lektion zählst du die durch Leerzeichen getrennten Wörter eines Satzes, indem du beim Durchlaufen des Strings den Zustand verfolgst.

Einführung

Ein zuverlässiger Weg, Wörter zu zählen, ist zu verfolgen, ob sich das Programm gerade in einem Wort oder in einem Leerraum befindet. Jedes Mal, wenn auf ein Leerzeichen ein anderes Zeichen folgt, hat ein neues Wort begonnen. So werden auch mehrere aufeinanderfolgende Leerzeichen korrekt behandelt.

Wichtige Punkte

  • Schalte die Compiler-Warnungen (compiler warnings) ein und behebe alle.
  • Verstehe den Datentyp und die Lebensdauer (lifetime) jedes Werts genau.
  • Prüfe immer die Eingabedaten und die Grenzen von Array-Indizes.

Codebeispiele in C und C++

C
Code ausführen →
main.c
#include <ctype.h>
#include <stdio.h>
int main(void) {
    const char *text = "C and C++ examples"; int words = 0, inside = 0;
    // Count transitions from whitespace into a word.
    for (; *text; ++text) { if (isspace((unsigned char)*text)) inside = 0; else if (!inside) { ++words; inside = 1; } }
    printf("words=%d\n", words);
}
Ergebnis der Ausführung
words=4
C++
Code ausführen →
main.cpp
#include <iostream>
#include <sstream>
#include <string>
int main() {
    std::istringstream input("C and C++ examples"); std::string word; int words = 0;
    // Formatted extraction skips whitespace and returns one word.
    while (input >> word) ++words;
    std::cout << "words=" << words << '\n';
}
Ergebnis der Ausführung
words=4

C und C++ im Vergleich

Die Variable inside gibt an, ob die aktuelle Position in einem Wort liegt. Bei einem Leerraum (geprüft mit isspace) wird inside auf 0 gesetzt. Kommt ein anderes Zeichen und inside ist 0, erhöht das Programm den Zähler words und setzt inside = 1. Der Satz "C and C++ examples" hat 4 Wörter.

C

C verwendet kleine prozedurale Funktionen und zeigt offen, wie Daten im Speicher dargestellt werden.

C++

C++ erlaubt weiterhin Arbeit auf niedriger Ebene, ergänzt aber Bibliothekstypen und sicherere Abstraktionen.

Übungen zur Vertiefung

Führe beide Versionen aus und ändere dann den Code, um zu beobachten, welche Sicherheit jede Sprache bietet.

  • Teste ungültige Eingaben und Grenzwerte.
  • Kompiliere mit den Flags -Wall -Wextra -Wpedantic, um zusätzliche Warnungen einzuschalten.
  • Lagere gemeinsame Deklarationen in eine Header-Datei und die Implementierung in eine eigene Datei aus.

Mit einer Challenge üben

Nutze den Inhalt dieser Lektion, um ein echtes Problem zu lösen. Jede Challenge läuft im Browser, mit sofortigen Tests und einem KI-Review.

Alle Challenges