Matroids Matheplanet Forum Index
Moderiert von matroid
Informatik » Programmieren » C: Sonderzeichen wie Striche, Ecken etc mit printf Darstellen?
Autor
Universität/Hochschule C: Sonderzeichen wie Striche, Ecken etc mit printf Darstellen?
milch
Ehemals Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 23.02.2009
Mitteilungen: 422
  Themenstart: 2012-12-28

Hallo, ich möchte ein C-Programm schreiben das mir ein Schachfeld in die Konsole "zeichnet". Es gibt ja eine Reihe von Sonderzeichen bzw- Ascii-Symbolen die dafür gut geeignet wären z.b. diese hier: │┤║ ╣ ╗ ╝ ¢ ┐└ ┴ ┬├ ─ ┼ ╚ ╔ ╩ ╦ ╠ ═ ╬ kann ich diese einfach so in die printf Anweisung schreiben oder gibt es da Probleme? Und geibt es vieleicht auch Symbole für Schachfiguren? Hmm ich sehe gerade die Symbole werden garnicht dargestellt hier im Forum, es geht um diese Symbole: www.weblog-deluxe.de/sonderzeichen-und-symbole-ascii-art-fur-second-life/ gemeint sind die "Striche" edit: ok sie werden doch dargestellt, nur in der Vorschau nicht. [ Nachricht wurde editiert von milch am 28.12.2012 20:37:21 ]


   Profil
FriedrichLaher
Ehemals Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 30.10.2001
Mitteilungen: 1923
Wohnort: Wien,Oesterr., Wohnort Stuttgart
  Beitrag No.1, eingetragen 2012-12-28

Hallo milch einfach probieren - klappt ziemlich sicher


   Profil
Quadsoft
Ehemals Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 26.07.2011
Mitteilungen: 48
  Beitrag No.2, eingetragen 2012-12-28

\quoteon(2012-12-28 20:36 - milch im Themenstart)Und geibt es vieleicht auch Symbole für Schachfiguren? \quoteoff Nein. Guck dir bitte eine ASCII-Tabelle an. Raten hilft hier nichts!


   Profil
LutzL
Senior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 06.03.2002
Mitteilungen: 10094
Wohnort: Berlin-Mahlsdorf
  Beitrag No.3, eingetragen 2012-12-28

Hi, wie Du gesehen hast, kann das gleiche Zeichen (Doppelbyte) unter verschiedenen Umständen verschieden dargestellt werden. Das kannst Du ausprobieren, indem Du auf dieser Seite im Browser-Ansicht-Menü einen anderen Zeichensatz einstellst, cp850, windows-1252, iso-latin1 und utf8 sind üblich. Du musst also dafür sorgen, dass Deine Konsole/Eingabeaufforderung dieselbe Zeichenkodierung verwendet wie Dein Code-Editor. Beides kann man einstellen. Etwas schwerer ist es, diese Gleichheit nach Programmaufruf zu erzwingen. Ciao Lutz [Die Antwort wurde vor Beitrag No.1 begonnen.] PS: Die Symbole gibt es schon, man braucht nur den richtigen Zeichensatz und die korrekte Kodierung dafür: ♔♕♖♗♘♙ ♚♛♜♝♞♟ [ Nachricht wurde editiert von LutzL am 28.12.2012 20:51:57 ]


   Profil
FriedrichLaher
Ehemals Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 30.10.2001
Mitteilungen: 1923
Wohnort: Wien,Oesterr., Wohnort Stuttgart
  Beitrag No.4, eingetragen 2012-12-28

zumindet bei mir hat's gklappt \sourceon C #include int main(){ printf("│┤║ ╣ ╗ ╝ ¢ ┐└ ┴ " "┬├ ─ ┼ ╚ ╔ ╩ ╦ ╠ ═ " "╬  ¦ ı  ∟    ⌂ ΞT ∩ L ⊂ ‡\n"); } \sourceoff Konsole: fritz  @ linux-n6yi cd /dev/shm fritz @ linux-n6yi/dev/shm fritz @ linux-n6yi/dev/shm gcc sz.c fritz @ linux-n6yi/dev/shm ./a.out │┤║ ╣ ╗ ╝ ¢ ┐└ ┴ ┬├ ─ ┼ ╚ ╔ ╩ ╦ ╠ ═ ╬  ¦ ı  ∟    ⌂ ΞT ∩ L ⊂ ‡ \sourceoff (für erzeugung des Quelltextes einfach copy/paste" verwendet [Die Antwort wurde nach Beitrag No.2 begonnen.] [ Nachricht wurde editiert von FriedrichLaher am 28.12.2012 20:56:45 ] [Edit: matph] Überbreite behoben. [/Edit] [ Nachricht wurde editiert von matph am 28.12.2012 21:17:29 ] [ Nachricht wurde editiert von FriedrichLaher am 30.12.2012 11:53:14 ]


   Profil
Buri
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 02.08.2003
Mitteilungen: 46686
Wohnort: Dresden
  Beitrag No.5, eingetragen 2012-12-28

\quoteon(2012-12-28 20:48 - LutzL in Beitrag No. 3) PS: Die Symbole gibt es schon ... \quoteoff Hi LutzL, die Darstellung von Zeichen im Forumbeitrag ist eine andere Frage. Hier geht es um printf, und man kann wohl davon ausgehen, dass nur die ASCII-Zeichen von 32 bis 255 ausgegeben werden können. @milch Deine Frage führt zu dem Problem, wie man Zeichenketten-Literale (also Zeichenkettenkonstanten, die wörtlich angegeben sind) darstellt. Ein Zeichenketten-Literal hat folgenden Aufbau: 1. Ein Doppel-Hochkomma (double quote), also ". 2. Ein beliebiges ASCII-Zeichen von 32 bis 255, außer " und \ oder \" oder \\, damit wird ein Zeichen " oder \ dargestellt oder \xn oder \xnn oder \xnnn oder \0 oder \0n oder \0nn oder \0nnn für die Darstellung eines Zeichens mit dem angegebenen hexadezimalen (bei \x) oder oktalen (bei \0) Code. Die Zahl wird so lange wie möglich gelesen, aber bis höchstens drei Ziffern, dann ist das Zeichen zu Ende. Vorsicht! Wenn man 0x0F und dann ein gewöhnliches B haben will, muß man \x00FB schreiben, das ergibt 0x0F 0x42, während \x0FB nur ein Zeichen ergibt, nämlich 0xFB. oder Die speziellen Zeichen \b,\f,\n,\r,\t (und evtl. weitere) für Rückschritt (0x08), Seitenvorschub (0x0C), Zeilenvorschub (0x0A), Wagenrücklauf (0x0D) und Tabulator (0x09). 3. Zum Schluß ein Doppel-Hochkomma (double quote), also ". Wenn der Texteditor, mit dem man den Quelltext herstellt, die gewünschten Zeichen darstellen kann, gibt es also überhaupt keine Probleme mit printf. Wenn nicht, dann muß man die obengenannten Regeln für Zeichen, die mit \x angegeben werden, einhalten, typischerweise kann man den String dann als "\xnn\xnn\xnn\xnn\xnn..." schreiben, wobei nn beliebige Hexadezimalziffern sind (welche man nehmen muß, siehst du hier) und die Pünktchen natürlich "und so weiter" bedeuten. Diese Schreibweise hat den Vorteil, dass sie portabel ist, und man solche Quellcodes mit Sicherheit als E-Mail verschicken kann. Mit den graphischen Sonderzeichen mag es auch gehen, aber nur, wenn man Glück hat. Gruß Buri [ Nachricht wurde editiert von Buri am 29.12.2012 10:00:12 ]


   Profil
milch
Ehemals Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 23.02.2009
Mitteilungen: 422
  Beitrag No.6, vom Themenstarter, eingetragen 2012-12-29

Also erstmal danke für die ganzen Antworten, das ich die Zeichen Maskieren muss hatte ich zumindest vermutet, aber dann bliebe ja auch das Problem mit der verwendeten Zeichentabelle. jedenfalls habe ich es mir erstmal einfach gemacht, ich habe die Zeichen einfach per Copy and Paste aus dem Browser direkt in den Programmcode in Joe (also der Editor Joe) kopiert. Joe zeigt die zeichen genauso an, und das kompilierte Program stellt sie in der Konsole auch korrekt dar. D.h. ich werde mich damit auch erstmal begrüngen, bis Probleme auftauchen :). danke


   Profil
LutzL
Senior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 06.03.2002
Mitteilungen: 10094
Wohnort: Berlin-Mahlsdorf
  Beitrag No.7, eingetragen 2012-12-29

Hi, Buri, nein, wie schon Friedrich habe ich das auch ausprobiert und printf auf einem X-Term produziert tatsächlich die Sonderzeichen. Dazu muss man natürlich sagen, dass sowohl der Editor als auch das XTerm auf UTF8 eingestellt sind. Im Editor stehen in den Strings natürlich nicht die HTML-Enitäten, sondern direkt die UTF8-Zeichen, das ist bloß beim Kopieren des Quelltextes in den Codebereich umgewandelt worden. Es ist natürlich fraglich, ob es unter Windows genauso einfach funktioniert. Und wenn man auf einem XTerm ausgibt, kann man auch gleich die ANSI-ESCAPE-Sequencen benutzen, um die Hintergrundfarbe zu ändern, so dass man die Winkel und Striche evtl. gar nicht benötigt. Ciao Lutz


   Profil
milch hat die Antworten auf ihre/seine Frage gesehen.

Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]