Problem mit ASCII-Zeichen
-
Servus!
Ich möchte gerne bei einem C-Programm ASCII-Zeichen (Quadrat) ausgeben.
Mit alt+254 kann man im Normalfall ein Quadrat machen. (■)
Wenn ich alt+254 in einem C-Programm mache, kommt aber ein anderes Symbol (das im printf): http://666kb.com/i/b53eb6muo1l1be7xq.jpg
Wenn ich das Programm ausführe, kommt wieder ein anderes Symbol, aber wieder nicht das gewünschte: http://666kb.com/i/b53eb8czquh54gsz2.jpgWas mache ich da falsch?
Ich hoffe ihr könnt mir weiterhelfen.Lg Stefan
-
Das was du versuchst wird nicht gehen, ohne wide-char-strings.
Du versuchst Unicode-Zeichen in nur ASCII kompatible Typen reinzuhauen.
-
Das was du versuchst wird nicht gehen, ohne wide-char-strings.
Schwachsinn. Du musst nur dein Terminal richtig einstellen.
-
Ahh, sorry, habe mir die Bilder nicht angeschaut, sonst hätte ich bemerkt, daß du Windows hast. In dem Fall reicht es, vor dem Programmstart zum Terminal zu sagen: chcp 850.
Weitere Information gibt es zum Beispiel hier:
http://de.selfhtml.org/inter/sprache.htmWenn du aber auf Unicode umsteigen würdest, könntest du dir das sparen.
-
Vielen Dank für die Hilfe erstmals!
Aber kann mir bitte jemand sagen, wie und wo ich das chcp 850 dem Terminal sagen kann und was dann zu tun ist, damit es funktioniert?
Das ist nämlich das erste Mal, dass ich mit so einem Zeug zu tun habe.Lg Stefan
-
Gerne, aber dann sicher wieder so ein Flamer und beschwert sich, daß wir das im ANSI-Forum machen -- aber egal.
chcp ist ein Windows-Befehl, der den Zeichensatz für das Terminal umstellt.
Den mußt du irgendwann ausführen, bevor du dein Programm startest.
Wenn das Terminal von einer IDE gestartet wird, geht das wahrscheinlich nicht so leicht: da ist es leichter, das Programm händisch in einem Terminal zu starten.Man kann den gleichen Effekt auch mit irgendeiner Windows-Funktion erreichen -- aber das solltest du in der Windows-Konsolen-Ecke nachfragen.
-
Gerne, aber dann sicher wieder so ein Flamer
aber dann kommt sicher ...
Du könntest auch einen Mod bitten, den Thread zu verschieben.
-
Ich glaube irgendwas mit dem Terminal zu machen wird nicht so gut, da das,was ich da mache nur ein Unterprogramm zu einem großen Programm wird.
Also wird wohl eine Windows-Funktion herhalten müssen, wo ich aber wieder nicht weiß, wie das geht.^^
Kann mir bitte jemand beim Verschieben des Threads helfen? Ich finde irgendwie nicht, wie man einem Mod eine Nachricht schreiben kann.
Lg Stefan
-
Keiner da. lol.
#include <windows.h> SetConsoleOutputCP(850);
siehe
http://msdn.microsoft.com/en-us/library/ms686036(VS.85).aspx
-
Mit dem Link habe ich leider nichts anfangen können.
Wenn ich den Code von dir in mein Programm einfüge, dann ändert sich nichts:
http://666kb.com/i/b5auyxutydo4u6rx9.jpgLg Stefan
-
Wenn ich den Code von dir in mein Programm einfüge, dann ändert sich nichts:
Schade, ich war mir so sicher.
Es gibt auch noch SetConsoleCP().Bevor ich jetzt weiter Blödsinn rede, mach einfach einen neuen Thread im "DOS und Win32-Konsole"-Forum.
Dort wissen die das besser.Aber: Zeichen in Strings kann man mit Escape-Sequenzen darstellen, das ist klarer so.
Sollte man gegenüber deiner hart-kodierten Variante bevorzugen:printf(" \xfe "); /* FE ist 254 in Basis 16 */ /* oder */ putchar(' '); putchar(254); putchar(' '); /* oder ... */
-
Bevor ich jetzt weiter Blödsinn rede, mach einfach einen neuen Thread im "DOS und Win32-Konsole"-Forum.
Lass das lieber bleiben, ich hatte recht:
#include <stdio.h> #include <stdlib.h> #include <windows.h> int main(int argc, char *argv[]) { SetConsoleOutputCP(850); printf(" \xfe "); return 0; }