Der Umgang mit Umlauten
-
Hi, versuche mich schon eine weile an diesem Code.
Für die switch Abfrage muss ich den Umlaut tatsächlich als Umlaut in der Variablen Zeichen haben oder nicht?
Wenn ich ö eingebe erhalte ich in der Variablen Zeichen -108'"' aber ich möchte ja gerne das ö haben. Wie stelle ich das an?
#include <stdio.h> # int umlaut(char zeichen) { switch(zeichen) { case 'ä': case 'Ä': case 'ö': case 'Ö': case 'ü': case 'Ü': return (1); default: return(0); } } main() { char zeichen; printf("Bitte geben Sie einen Buchstaben: "); zeichen=getchar(); getchar(); printf("Umlaut(1),kein Umlaut(0) => Umlaut(%i)",umlaut(zeichen)); getchar(); }
danke senzi
-
Das ist alles nur eine Frage der Darstellung.
printf("Zeichen: %c Code: %i Hex: %2x\n", 'ö', 'ö', 'ö'); printf("Zeichen: %c Code: %i Hex: %2x\n", -108, -108, -108);
Allerdings gibt es bei Windows noch das Problem, dass die Konsole eine andere Codepage nutzt als die GUI.
-
Bitte nur einen Thread zum Thema benutzen. Willkürlich lasse ich mal diesen Thread offen, verweise jedoch auch auf den anderen:
http://www.c-plusplus.net/forum/320489
-
Hi, ich habe jetzt den Code von SeppJ versucht. Es läuft bei mir jetzt trotzdem noch nicht. Ich bekomme zwar keine Fehlermeldung aber das Ausgabe Fenster verschwindet sofort wieder.
@dirk B: Das war mir nicht klar, das es soviel Möglichkeiten gibt.
by
PS: Sorry wegen doppelten post!
-
Du meintest meinen Code, oder?
Füg mal noch ein "int c; while ((c = getchar()) != EOF && c != '\n') ;" nach dem "zeichen=getwchar();" ein.Oder sorge in den Build-Optionen dafür, dass das Fenster offen bleibt, was IMHO die elegantere Lösung ist.
edit: Typ von c muss int sein!
-
Unter Windows gibt es API-Funktionen zur Konvertierung:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms647493(v=vs.85).aspx
-
Senzenberger schrieb:
[...]
aber das Ausgabe Fenster verschwindet sofort wieder.Starte Dein Programm aus der Konsole.
-
Senzenberger schrieb:
@dirk B: Das war mir nicht klar, das es soviel Möglichkeiten gibt.
Es gibt noch mehr.
Es kommt darauf an, wie du die interne Darstellung auffassen willst. 'ö' oder -108 ist ja nur für den Menschen da, damit der da besser lesen kann.
Und für C ist ein Zeichen auch nur eine Ganzzahl. Der Wert hängt dann von der Codierung ab.
(Strings sind in C anders)