Umlaute in C



  • Hi(gh)!

    Und weiter geht es mit ERLENKÖTTER, Helmut: C - Programmieren von Anfang an... auf Seite 60 ist in den erklärenden Anmerkungen zum Programmskript "bspl0019.c" zu lesen, dass die (in ctype.h enthaltenen) Funktionen toupper() und tolower() mit Umlauten (das große ẞ gab es damals noch nicht) nicht funktionieren... das fand ich interessant und wollte es dann gleich mal ausprobieren:

    #include <stdio.h>
    #include <ctype.h>
    
    main()
    {
      char eingabe;
      printf("\nGeben Sie ein deutsches Sonderzeichen als Großbuchstabe ein (Umlaut oder ẞ): ");
      scanf("%c",&eingabe);
      if ( !(eingabe =='Ä' || eingabe=='Ö' || eingabe=='Ü' || eingabe=='ẞ'))
        printf("Dies war leider kein passendes Zeichen!\n");
      else
      {  
        eingabe=tolower(eingabe);
        printf("\nIhre Eingabe als Kleinbuchstabe: %c\n",eingabe);
      }
    }
    

    Beim Komplieren (im C90-Modus) wirft gcc vier Warnmeldungen (jeweils mit unterschlängeltem Sonderzeichen):

    warning: multi-character character constant [-Wmultichar]
    12 | if ( !(eingabe =='Ä' || eingabe=='Ö' || eingabe=='Ü' || eingabe=='ẞ'))

    und wenn ich das Programm dann starte, wird die if-Bedingung auch bei Eingabe von Ä, Ö, Ü oder ẞ nie falsch!

    Multi-character constant: klar, das sind Zeichen, die anders als Standard-ASCII mit mehr als einem Byte kodiert sind... was hat es mit dem Kommandozeilen-Switch -Wmultichar auf sich?

    Bis bald im Khyberspace!

    Yadgar


Anmelden zum Antworten