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 hängt von deinem Betriebssystem / deinem Compiler ab. Das Problem ist, dass Umlaute eine zu große interne Zahlenrepräsentation haben und nicht mehr in ein einzelnes char passen. Die sauberste Lösung wäre die ICU Library:
http://www.icu-project.org/Unter Windows klappt vllt. dieser Code:
#include <stdio.h> #include <wchar.h> int umlaut(wchar_t zeichen) { switch(zeichen) { case L'ä': case L'Ä': case L'ö': case L'Ö': case L'ü': case L'Ü': return 1; default: return 0; } } int main() { wchar_t zeichen; printf("Bitte geben Sie einen Buchstaben: "); zeichen=getwchar(); printf("\nUmlaut(1),kein Umlaut(0) => Umlaut(%i)\n",umlaut(zeichen)); getchar(); }
-
Bitte nur einen Thread zum Thema benutzen. Willkürlich schließe ich mal diesen Thread und verweise auf den anderen:
http://www.c-plusplus.net/forum/320490