Ä,Ö etc in printf funktion (C)



  • Hallo,

    bin ein Neuling in Sachen C Programmierung und frage mich schon seit längerer Zeit, wie man z.B. ein ae in der printf Funktion durch ein ä ersetzen kann. Was ist da so die eleganteste und schnellste Methode?

    Gruss Gast



  • Am elegantesten ist dann einfach printf("ä") bzw. cout << "ä" << endl.
    (Achtung, hier gibt's viele Leute mit printf-Allergie, die melden sich auch gleich noch. C-Probleme => C-Forum, nicht C++-Forum. Das ist aber eher ein Problem für das Konsolenforum).

    Spaß beiseite:
    Ob Du dann etwas von dem ä hast hängt davon ab, wo Du es ausgibst. Auf z.B. der Linux-Konsole funktioniert das sofort, wenn die Zeichenkodierung der Konsole der Zeichenkodierung der Code-Datei entspricht. Bei der Windows-Konsole wird dagegen eine Zeichenkodierung benutzt, die wohl kaum einer in seinem Editor benutzt, dementsprechend ist dann eine Umwandlung nötig. Du kannst ja mal versuchen die Ausgabe deines Programms in eine Datei zu schreiben (xyz.exe > datei.txt) und in einem Editor zu betrachten. Dann siehst Du, dass es nur an der Kodierung hakt.



  • Ich benutze ms visual studio. Bin mir allerdings sicher gehört zu haben, dass man sich auch in dem DOS-Fenster, welches sich zur Ausgabe öffnet ein ä anzeigen lassen kann. Das hat doch irgendwas mit den ascii code zu tun oder?





  • Er wollte doch, wenn ich das richtig verstanden habe, den Teilstring "ae" durch
    ein "ä" ersetzen (nicht Umcodieren). Ich lass in so einem Fall zwei Pointer laufen:

    char  *p, *q;
    
    for ( p=quelle, q=ziel; *p, p++, q++){
      if ( memcmp( p, "ae", 2) == 0){
        *q = 'ä';
        p++;
      } else {
        *q = *p;
      }
    }
    


  • @ Wirdbald: Genau das meinte ich, vielen Dank.

    @ Scheppertreiber: Ne, wollte eigentlich in der Ausgabe im DOS Fenster statt ae ein ä haben. Sorry, falls ich mich unklar ausgedrückt hab 😉


Log in to reply