gibt es eine Möglichkeit, farbigen Text in Dateien mit C-Programmiersprache auf Ubuntu Linux zu drucken, können Sie Farbcodes mit printf() verwenden und farbigen Text zu Konsole oder Terminalfenster drucken, aber wie man Text drucken Textdateien mit Farben?C fprintf mit Farben
Antwort
Die kurze Antwort ist, können Sie nicht, die lange Antwort ist, müssen Sie eine Art von Mark-up zusammen mit Ihrem Text in einer Vielzahl von Formaten, die verfügbar sind. Es gibt keinen universellen Standard, den Sie verwenden können, also müssen Sie einen auswählen.
Die Farbcodes sind spezifisch für die Konsole und nicht zum Drucken geeignet, wenn Sie den Text einfach wieder auf dem Bildschirm anzeigen, kein Problem, aber wenn Sie es dann drucken möchten, müssen Sie tun etwas Arbeit.
Am einfachsten ist es, HTML-Tags für die Anzeige in einem Browser zu schreiben und von dort aus zu drucken. Das Schreiben in den Drucker mit den Markup-Codes des Druckers ist ebenfalls möglich und kann bei einigen Druckern einfach (oder fast unmöglich) sein. Der Nachteil ist, dass dies eine druckerspezifische Lösung ist. Wenn Sie wirklich ehrgeizige Ausgabe im PDF-Format (es ist nur Text), RTF oder einem anderen Dokument-Format, aber das dauert Zeit und Fähigkeiten.
Vielen Dank für Ihre Antwort, ja, ich werde die kurze Antwort nehmen, keine Farben im Klartext c auf Linux, weil es so einfach zu lesen und zu schreiben gemacht wurde, alles in Linux ist eine Datei, also wenn ich Text mit drucken möchte Farben, entweder in Terminal oder in Textdatei drucken und HTML-Tags hinzufügen und Farben für Text angeben. –
ich diese Lösung verwende, die recht ordentlich ist, wenn Sie in Ströme sind und eine Frage der Terminalemulation
#include <cstdlib>
#include <iostream>
#include <sstream>
namespace sps {
namespace colors {
enum color {
none = 0x00,
black = 0x01,
red = 0x02,
green = 0x03,
yellow = 0x04,
blue = 0x05,
magenta = 0x06,
cyan = 0x07,
white = 0x08
};
}
namespace faces {
enum face {
normal = 0x00,
bold = 0x01,
dark = 0x02,
uline = 0x04,
invert = 0x07,
invisible = 0x08,
cline = 0x09
};
}
/**
* Generate string for color codes for std::iostream's
*
* @param foreground
* @param background
*
* @return
*
* Usage:
*
* using namespace sps;
* std::cout << "These words should be colored [ "
* << set_color(colors::red) << "red "
* << set_color(colors::green) << "green "
* << set_color(colors::blue) << "blue"
* << set_color() << " ]" << std::endl;
*
*/
static inline std::string set_color(sps::colors::color foreground = sps::colors::none,
sps::colors::color background = sps::colors::none) {
std::stringstream s;
s << "\033[";
if (!foreground && ! background){
s << "0"; // reset colors if no params
}
if (foreground) {
s << 29 + foreground;
if (background) s << ";";
}
if (background) {
s << 39 + background;
}
s << "m";
return s.str();
}
/**
*
*
* @param face
*
* @return
*/
static inline std::string set_face(sps::faces::face face = sps::faces::normal) {
std::stringstream s;
s << "\033[";
if (!face) {
s << "0"; // reset face
}
if (face) {
s << face;
}
s << "m";
return s.str();
}
}
int main(int agrc, char* argv[])
{
using namespace sps;
std::cout << "These words should be colored [ "
<< set_color(colors::red) << "red "
<< set_color(colors::green) << "green "
<< set_color(colors::blue) << "blue "
<< set_color(colors::cyan) << "cyan "
<< set_color(colors::magenta) << "magenta "
<< set_color(colors::yellow) << "yellow"
<< set_color() << " ]" << std::endl;
return EXIT_SUCCESS;
}
++
C
Das ist erstaunlich, vielen Dank noch einmal. –
Gern geschehen. Es tut mir leid, dass im Beispiel keine Gesichter enthalten sind, aber diese funktionieren auch, z. '<< set_face (faces :: bold) <<" Bold "' gibt ein fettes Gesicht. –
Danke, ich schreibe normalerweise in C, aber C++ hat manchmal eine sauberere Art, den Code zu organisieren. –
- 1. Mit fscanf und fprintf zusammen in C
- 2. fprintf mit String-Argument
- 3. Wie drucke ich \\ in C? (fprintf)
- 4. Probleme fprintf
- 5. Sind fscanf und fprintf in C gepuffert?
- 6. C# Trackbar benutzerdefinierte Farben
- 7. fprintf schreibt nicht in Datei
- 8. C# Autocomplete Farben, Bilder?
- 9. C# Alle Farben von Farbe
- 10. C++ fprintf über viele Funktionen zu einer einzigen Textdatei
- 11. Programmatisch Farben in C# ändern
- 12. C: Kann fprintf nicht zum Ausdrucken in Ausgabedatei
- 13. Farben in C++ Win32 Konsole
- 14. fprintf verursacht Kommas in Matlab
- 15. Zufällige Farben mit Vorzug
- 16. Unterschied zwischen fprintf, printf und sprintf?
- 17. Einliner für fopen, fprintf, fclose?
- 18. Kompilierungsfehler: Fprintf wirft Parse Fehler
- 19. Redirect fprintf Ausgabe an einen Port
- 20. lesen fprintf, während das Programm läuft
- 21. Text mit zwei Farben
- 22. Fading Farben mit jquery?
- 23. Listenelemente mit wechselnden Farben
- 24. Vergleicht man Farben in Objective-C
- 25. Matlab ShortEng Zahlenformat über sprintf() und fprintf()?
- 26. Probleme mit Storyboard Farben in gemischten Ziel-c/Swift-Projekt
- 27. C++ - 10 beliebtesten Farben einer Bitmap
- 28. fprintf für große Matrix in Matlab
- 29. Wie kann fprintf in Linux blockieren?
- 30. Fehler bei Verwendung ==> fprintf (In Matlab)
Farbige Ausgabe verwendet wird, ist nicht eine Frage der c von printf. Bessere Verwendung von Termcap a/o ncurses oder ähnlichem – ikrabbe
Die Codes, auf die Sie sich beziehen, sind nur im Zusammenhang mit einem Terminal sinnvoll. Wenn Sie die Datei an das Terminal ausgeben, sehen Sie die gleichen Farben ... aber in einer Textdatei gibt es keinen "farbigen Text". – FatalError
Die meisten Terminals können farbige Ausgaben drucken und z.B. 'printf (" \ 033 [33; 1mBold Yellow \ 033 [0m) "] druckt" Bold Yellow "in fettem Gelb. –