Προς το περιεχόμενο

printf + χρωματα


jtsc21

Προτεινόμενες αναρτήσεις

Δημοσ.

γεια σας παιδια

 

 

εχω την εξης απορια:

 

γινετε σε ενα προγραμμα στη C να εκτυπωνω τα αποτελεσματα εγχρωμα?

Δημοσ.

Ναι γίνεται πρέπει να παίξεις με τα escape sequences της κονσόλας (σε UNIX, σε Windows δεν ξέρω τι γίνεται...)

 

Για παράδειγμα:

 

#include <stdio.h>

#include <string>

 

using std::string;

 

int main(void) {

 

string RED = "\033[1;31m";

string RED_DARK = "\033[0;31m";

string GREEN = "\033[0;32m";

string BLUE = "\033[1;34m";

string YELLOW = "\033[1;33m";

string WHITE = "\033[1;37m";

string CYAN = "\033[1;36m";

string NC = "\033[0;0m";

string PURPLE = "\033[0;35m";

 

printf("%sI do red now!\n", RED.c_str());

printf("%sNow I do yellow!\n", YELLOW.c_str());

printf("%sAnd now I do green!\n", GREEN.c_str());

printf("Finally %sI do %sa %smix!!!\n", RED_DARK.c_str(), BLUE.c_str(), CYAN.c_str());

 

printf("%sReset the terminal now\n", NC.c_str());

return 0;

}

 

// Θέλει c++ για να έχεις την string, αλλά μπορείς να το κάνεις σε c

// κλασσικά αντί για string, const char *

Δημοσ.

Σε DOS/Windows μπορείς να δεις την ρουτίνα cprintf η οποία επιτρέπει την εκτύπωση έγχρωμου κειμένου.

 

Η cprintf περιλαμβάνεται στην (μη ANSI) βιβλιοθήκη conio.h η οποία παρέχεται στους περισσότερους DOS & Windows compilers (για παράδειγμα CodeGear Turbo C++).

 

Εναλλακτικά, επί εποχή DOS μπορούσες να χρησιμοποιήσεις ANSI escape sequences μέσο printf εφόσον είχες εγκατεστημένο το ANSI.SYS driver.

Δημοσ.

Έτσι είναι, μπορείς να κάνεις την ίδια δουλεία και από το Console API, απλά το conio.h στα Windows 32bit κρύβει τις άμεσες και πολύπλοκες, ορισμένες φορές, κλήσεις στο ισχυρότατο αυτό API και καθιστά ευκολότερο το port DOS console προγραμμάτων (που βασίζονται στην conio.h) στο περιβάλλον της Windows console.

 

Στους DOS compilers, το conio.h κρύβει τις άμεσες κλήσεις στο Video BIOS Interface (Int 10h).

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...