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.


  • Mod

    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)


Anmelden zum Antworten