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++; } }