umlaute mit case ersetzen



  • Hallo!
    Ich wollte ein Programm schreiben das Umlaute ersetzt und dies mit einer switch-Anweisung und hex-Angaben in case lösen. So wie in dem folgenden Quelltext. Ist das überhaupt möglich? Und wenn ja wie?

    #include <stdio.h>
    
    int main()
    {
    	int c;
    	while( (c = getchar() ) != EOF )
    		switch(c)
    		{
    			case 0x84:
    				putchar('a'); putchar('e');
    				break;
    
    			case 0x94:
    				putchar('o'); putchar('e');
    				break;
    
    			case 0x81:
    				putchar('u'); putchar('e');
    				break;
    
    			case 0xE1:
    				putchar('s'); putchar('s');
    				break;
    
    			default:
    				putchar(c);
    		}
    
    	return(0);
    }
    

    Danke!



  • void myPrintf( char* str )
    {
    //... to be written
    }
    
    myPrintf("häää ??");
    

    Ausgabe: haeaeae ??

    meinst du sowas ?



  • Zum Beispiel , ja. Ich möchte es inerhalb der myprintf() gerne mit einer Switch-Anweisung lösen wo case nicht 'ä' sondern 0x84, also den hex-Wert von ä abgleicht. Das Beispiel von mir funktioniert so leider nicht.



  • so:

    case 0xE4:
    puts("ae");
    break;
    

    oder so:

    case 'ä':
    puts("ae");
    break;
    

    welcher hexwert zu welchem buchstaben gehört, kannst du ja so abfragen:

    unsigned char c = 'ä';
    printf("%X\n", c );
    

    oder in der tabelle deiner codepage nachsehen.



  • Wenn du einen Debugger hast und damit umgehen kannst, dann setzt doch einfach mal einen Breakpoint um zu sehen, was für einen Wert die Variable c hat, evtl stimmt 0x84 für 'ä' auch nicht. Alternativ kannst du natürlich auch den Integer-Wert für c ausgeben lassen (ist wohl einfacher).



  • void myPrintf( char* str )
    {
    	while(*str)
    	{
    	   switch(*str)
    	   {
    			case 'ä':
    				printf("%s", "ae" );
    			break;
    			//...
    		   default:
    				putchar(*str);
    	   }
    	   str++;
    	}
    }
    

    🙂


Anmelden zum Antworten