Zeichenfunktionen
Die Bibliothek ctype.h hat Funktionen, die mit einem Zeichen arbeiten. Zwei davon verändern es:
toupper(c)liefert den Großbuchstaben:toupper('a')ist'A';tolower(c)liefert den Kleinbuchstaben:tolower('Q')ist'q'.
Andere Zeichen bleiben, wie sie sind: toupper('5') ist '5', und toupper('A') ist 'A'.
#include <ctype.h>
#include <stdio.h>
int main(void) {
char name[] = "eva";
name[0] = toupper(name[0]);
printf("%s\n", name);
return 0;
}Das gibt Folgendes aus:
Evatoupper verändert das Zeichen, das du übergibst, nicht. Es liefert ein neues Zeichen, und du musst es speichern: name[0] = toupper(name[0]);. Eine Zeile nur mit toupper(name[0]); lässt sich kompilieren, aber der Name bleibt eva, weil das neue Zeichen verworfen wird. (Das Ergebnis ist eine Zahl vom Typ int, der Code des Zeichens. Wenn du es in einem char speicherst oder mit %c ausgibst, ist es wieder ein Zeichen.)
Andere Funktionen beantworten eine Frage zu einem Zeichen:
isupper(c): Ist es ein Großbuchstabe?isalpha(c): Ist es ein Buchstabe?isdigit(c): Ist es eine Ziffer, von'0'bis'9'?
Die Antwort ist eine Zahl: 0 bedeutet nein, jede andere Zahl bedeutet ja. Verwende sie also direkt als Bedingung, wie du es aus der Lektion über Bedingungen kennst: if (isdigit(c)). Diese Schleife zählt die Ziffern in einem Code:
char code[] = "R2D2";
int ziffern = 0;
for (int i = 0; code[i] != '\0'; i++) {
if (isdigit(code[i])) {
ziffern++;
}
}
printf("Ziffern: %d\n", ziffern);Das gibt Folgendes aus:
Ziffern: 2Diese Funktionen kennen nur die Buchstaben des englischen Alphabets, ohne Umlaute und ß. Ein weiterer Grund, die Zeichenketten, die du Zeichen für Zeichen durchgehst, ohne Umlaute zu schreiben.
So schreibst du es:
Anweisungen
- 1
Jemand hat die Stadt bei eingeschalteter Feststelltaste getippt. Füge
#include <ctype.h>hinzu und korrigierestadt: Ändere das erste Zeichen mittoupperin einen Großbuchstaben und alle anderen mittolowerin Kleinbuchstaben, in einer Schleife, die beim Index 1 beginnt. Gib sie dann aus:Korrigiert: Berlin. - 2
Erstelle darunter
char code[] = "B4X-27Q9";. Gehe ihn in einer Schleife durch, zähle seine Ziffern mitisdigitund seine Buchstaben mitisalphaund gibZiffern: 4, Buchstaben: 3aus.