Umlaute einlesen



  • MasterCounter schrieb:

    aha, ok, aber woher weiß ich welchen wert ae_ein hat?

    Mach dir ein kleines Programm, mit dem du ein Zeichen von der Tastatur einliest und lass dir den Wert ausgeben:

    ...
    zeichen = getche();
    
    printf(" = %d\n", zeichen);
    ...
    


  • oh ne, na klar hab ich hier sogar mal eins gemacht... heut ist echt nicht mein tag... 🙄

    danke dir, auch wenns ne schwere geburt war 😃



  • Warum funktioniert diese Funktion hier nicht? 😞

    char* ConvUmlaute (char *string)
    {
         int i=0;
         int len=0;
    
         int ae_ein=-124;
         int oe_ein=-108;
         int ue_ein=-127;
    
         int AE_ein=-114;
         int OE_ein=-103;
         int UE_ein=-102;
    
         int ss_ein=-31;
    
         unsigned char ae_aus=132;
         unsigned char oe_aus=148;
         unsigned char ue_aus=129;
    
         unsigned char AE_aus=142;
         unsigned char OE_aus=153;
         unsigned char UE_aus=154;
    
         unsigned char ss_aus=225;
    
         len=strlen(string);
    
         i=0;
         while (i<=len)
         {
               if (string[i]==ae_ein)
                  string[i]=(char)ae_aus;
               else if (string[i]==ue_ein)
                  string[i]=(char)ue_aus;
               else if (string[i]==oe_ein)
                  string[i]=(char)oe_aus;
    
               else if (string[i]==AE_ein)
                  string[i]=(char)AE_aus;
               else if (string[i]==UE_ein)
                  string[i]=(char)UE_aus;
               else if (string[i]==OE_ein)
                  string[i]=(char)OE_aus;
               else if (string[i]==ss_ein)
                  string[i]=(char)ss_aus;
    
               i++;
         }
         return string;
    }
    

    😕



  • Ganz einfach. Du machst folgendes:

    ...
    if(string[i] == 'a')
    {
       string[i] = 'a';
    }
    ...
    

    🙂

    Vielleicht verstehst du besser was ich meine, wenn du einfach mal nach deinen *_ein und *_aus mal folgendes aufrufst:

    printf("%d => %d\n", ae_ein, ae_aus);
    

    Du solltest die *_ein und *_aus übrigens besser als Konstanten definieren. (Also ein const davor schreiben oder sie als Präprozessormakros definieren.)



  • du meinst

    printf ("%c => %c",ae_ein,ae_aus);
    

    ich habs gemerkt, aber was muss ich ändern, das ist echt ein witz, aber ich steh im Moment echt irgendwie total auf der Leitung... 😡



  • Ich packs echt nicht...



  • immer noch nicht... 😃



  • ach komm, AJ jetzt sags mir halt, ich bin ja praktisch dein Nachfoger, weil meine Initialien sind AK 😉



  • ach komm, AJ jetzt sags mir halt, ich bin ja praktisch dein Nachfoger, weil meine Initialien sind AK 😉

    EDIT: Sorry wegen dem Doppelposting Firefox hat gesponnen... 😞 Ach nein, der IE hat ihn abgelenkt 😃



  • wie wärs mit %d???



  • @MasterCounter
    Na wenn ae_ein und ae_aus den gleichen Wert haben, dann änderst du nichts. Du musst rausbekommen welchen Wert du für ä einliest und welchen Wert du ausgeben musst, damit ein ä erscheint (und das gleiche bei den anderen Umlauten).

    Dazu kannst du dir übrigens wieder ein Programm schreiben. Einfach eine Schleife von 0 weg hochzählen lassen bis 255 (mehr hat hald ein char nicht ;)) und den %c und das %d dazu ausgeben.


Anmelden zum Antworten