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();
     }
    

  • Mod

    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


Anmelden zum Antworten