2017-03-06 3 views
-1

Kürzlich hatte ich ein Problem.der linux und windows über die farbe

#include <stdio.h> 
#include <stdlib.h> 
void main() 
{ 
    system("color 1F"); 
} 

Dies kann Windows gedruckt werden, aber nicht in Linux. Warum?

Error

+2

'void main()' alte ist, sollten Sie ein anderes Buch –

+6

'System lesen() 'führt einen Befehl aus. 'Farbe 1F' ist ein Windows-Befehl. Im Wesentlichen führt Ihr C-Code einen Windows-Befehl aus und Sie fragen sich, warum er in anderen Systemen nicht funktioniert. –

Antwort

6

Nichts mit c zu tun, gerade ausführen Sie einen system Anruf auf einen Befehl, der nicht unbedingt vorhanden sein.

color existiert in der Windows-Shell, aber nicht unter Linux. Ihr Code ist unter Linux nicht so wie er ist.

Linux hat seine eigene Art, es zu tun. Sie sollten überprüfen, auf welchem ​​Betriebssystem Sie laufen, und stattdessen setterm aufrufen, wenn Sie beispielsweise Linux (oder zur Kompilierungszeit) finden, also haben Sie bereits Windows & Linux abgedeckt.

Als portable Alternative Standard ANSI escape sequences sind auch auf vielen OSes weithin verfügbar (für Windows, you need Windows 10, obwohl)

+1

Vielleicht empfehlen Sie stattdessen ANSI-Farbcodes, jetzt sogar Windows 10 unterstützt sie (wieder), nach Jens A. Koch (http://stackoverflow.com/a/38617204/1475978) (einschließlich Workarounds/Vorschläge für andere Windows-Versionen)? –

+0

@NominalAnimal okay, aber ich denke, Escape-Sequenzen brauchen einige Anpassungen, um unter Windows zu arbeiten. Zum Beispiel müssen wir in Python die Ausgabe mit 'colorama' umleiten. –

+0

Wahr; Windows-Benutzer vor Win 10, Threshold Update 2, benötigen dies oder verwenden eine der alternativen Eingabeaufforderungen, die beispielsweise in der Antwort von Jens A. Koch aufgeführt sind. Ich habe das nur vorgeschlagen, weil ANSI-Farbcodes schließlich die tragbarste Lösung sind. Sie werden in alten Unix-Systemen unterstützt. Sie werden in allen POSIXy-Systemen unterstützt - Linux, BSDs, Macs. MS-DOS unterstützte ANSI-Escape-Codes über ANSI.SYS, aber irgendwann entfernte Microsoft die Unterstützung von der Windows-Eingabeaufforderung. Es scheint, dass es für Windows 10 in Threshold 2 Update im November 2015 wieder eingeführt wurde. Lustig. –

Verwandte Themen