Filterprogramm für Umlaute (ae ->ä)
-
Hey, ich schreibe grade an einem Filterprogramm, dass Umlaute umschreiben soll, bzw. aus ae, oe, ue welche erstellen soll. Dabei habe ich das Problem, dass ich für case ja nur eine Konstante eingeben kann.
Kann man das Problem über switch lösen oder muss man das anders regeln?Habe euch mal den Ansatz eingefügt und hoffe ihr könnt mir weiterhelfen!
lg Jan
#include <stdio.h> int main() { int c; while((c=getchar()) != EOF) switch(c) { case 0x84: putchar('a'); putchar('e'); break; case 0x94: putchar('o'); putchar('e'); break; case 0x81: putchar('u'); putchar('e'); break; default: putchar(c); } return 0; }
-
Schau dir doch mal die Funktionen aus string.h an.
Da ist bestimmt etwas dabei, das du gebrauchen kannst.
-
Danke erstmal für den Hinweis auf die Bilbiothek hier, wusste ich gar nicht.
Wollte das ganze jetzt mit einer Kombination aus strstr und cpystr machen. Also der Suche nach einem String in einem anderen String und den Teil dann eben ersetzen, allerdings klappt das nur bis zum ersten Auftreten des gesuchten Strings und nicht für die Weiteren..Stimmt der Grundgedanke oder benutz ich die falschen Funktionen?
lg Jan
-
Ja-Nein Frage mit oder, was soll man darauf antworten?
Wie interpretierst du dabei ein Ja bzw. ein Nein?Wenn du einzelne Zeichen (char) ersetzen willst, kannst du sinnvollerweise keine "str" Funktionen verwenden, da diese für Strings (also eine char-Folge mit abschließendem '\0') gedacht sind.
-
Ja aber da ich ja nicht einzelne Buchstabe ersetzen möchte, sonder ö durch oe, sprich zwei Buchstaben hatte ich das so verstanden, dass ich dafür einen String benutzen muss. Mein Beispielprogramm kann ja einzelne Zeichen ersetzen, das ist nicht das Problem. Aber ich muss ja 2 Buchstaben in Folge einlesen...
-
Wenn du ein 'a', 'o' oder 'u' gelesen hast, musst noch ein Zeichen einlesen und überprüfen, ob es ein 'e' ist. Wenn nein, gibst du beide Zeichen aus.