9.6. Stolpersteine
- Wie allgemein bei Arrays, besteht auch bei solchen vom Typ char die Gefahr, daß sie nicht ausreichend groß dimensioniert werden, um alle Zeichen unterzubringen. Dies hat zur Folge, daß beim Speichern von Zeichenketten über die Array-Grenzen hinausgeschrieben wird. Im Fall von Zeichenketten kommt noch hinzu, daß auf zusätzlichen Platz für die abschließende '\0' geachtet werden muß.
- Probleme mit nicht gültigen Speicherbereichen ergeben sich auch dann, wenn verschiedenen Zeichenketten-Funktionen ein Pointer auf char übergeben werden soll, dieser aber auf keinen mit malloc() reservierten Speicherbereich zeigt.
- Beim Einlesen von Zeichenketten mit scanf() kann es zum vorzeitigen Ende der Eingabe kommen, da diese Funktion jedes "Whitespace"-Zeichen als Begrenzer zwischen den einzelnen Argumenten interpretiert.
- Alle Funktionen aus der Standardbibliothek, die einzelne Zeichen darauf überprüfen, ob ein bestimmter Buchstabe vorliegt, berücksichtigen keine Umlaute und ß. Dies kann natürlich bei der Bearbeitung deutscher Texte zu falschen Ergebnissen führen. Das gleiche gilt für die Umwandlungs-Funktionen toupper() und tolower().
- Bei allen Funktionen zum Kopieren und Zusammenfügen von Zeichenketten dürfen sich Quell- und Zielbereich im Speicher nicht überlappen. Eine Ausnahme bildet hier nur memmove().
- Vorsicht ist geboten, sobald der Rückgabewert einer der ...cmp()-Funktionen innerhalb einer if-Anweisung abgefragt wird. Das Zutreffen der Gleichheit hat nämlich den Wert 0 zur Folge, der ja gleichbedeutend mit logisch "falsch" ist.