WIE KANN ICH IN C DAS ◻️und das ◼️ auf der Console ausgeben?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Du verwendest ein Unicodezeichen in einer ASCII-Consolumgebung.

Allein die Compileroptionen zu ändern gewährleistet jedoch nicht die richtige Darstellung von UTF8 in einer übergeordneten/aufrufenden Console. Diese muss ggf. für die Darstellung von Unicode explizit eingerichtet werden.

Festlegen der Codepage in der Windowsconsole:

chcp 65001

...für UTF-8

PS: Der UTF-8 Support der Standard-Windowsconsole (cmd.exe) bzw. Powershell unter Version 6 ist (teilweise) fehlerhaft!

Bei mir tut's :-)

> gcc -std=c99 -Wall chessboard.c && ./a.out 
◻ ◼ ◻ ◼ ◻ ◼ ◻ ◼ 
◼ ◻ ◼ ◻ ◼ ◻ ◼ ◻ 
◻ ◼ ◻ ◼ ◻ ◼ ◻ ◼ 
◼ ◻ ◼ ◻ ◼ ◻ ◼ ◻ 
◻ ◼ ◻ ◼ ◻ ◼ ◻ ◼ 
◼ ◻ ◼ ◻ ◼ ◻ ◼ ◻ 
◻ ◼ ◻ ◼ ◻ ◼ ◻ ◼ 
◼ ◻ ◼ ◻ ◼ ◻ ◼ ◻ 

Aber Du verwendest vermutlich ein MS-DOS-Terminal aus der Steinzeit. Mit einem einigermaßen aktuellen Windows kannst Du diese Konsole via „chcp 65001" auf UTF-8 umschalten, und dann musst Du einen Font wählen, der diese Quadrate anzeigen kann.

Wenn Dein "console.h" auch Farbe oder die ANSI-Sequenzen "\33[7m" (invertiert) und "\33[m" (normal) unterstützt, wird es einfacher sein, normale und invertierte Leerzeichen auszugeben. Mit 2 Leerzeichen je Feld sieht das bei mir etwa so aus:

Bild zum Beitrag

 - (Programmiersprache, C (Programmiersprache), ASCII)
ralphdieter  03.05.2024, 12:24

Ich kann es nicht selbst testen, bin aber neugierig: Funktioniert es bei Dir mit

printf("\33[%dm  \33[m", (i+j)%2 ? 7 : 0);

statt

printf("%s ", schachbrett[i][j]);

?

0

Ich habe deinen rat befolgt aber in cLion fonktionirt das bei mir irgendwie nicht