Linux'ta çalışan bir C dosyam var. Kırmızı (başarısızlık) ve bazılarında yeşil (geçer) bazı çizgiler yazdırır.C kodu, metin metni rengini değiştirir; varsayılanlar nasıl geri yüklenir? Linux
#define BLACK "\033[22;30m"
#define GREEN "\033[22;31m"
printf(GREEN "this will show up green" BLACK "\n");
sonunda SİYAH olmasaydı terminal metin her şey için yeşil olmaya devam edecektir: Tahmin edebileceğiniz gibi, aşağıdaki gibi printf ifadeleri kodları kaçış kullanır. Eğer onu yakalamadıysanız, siyah olmayan bir arka plana sahip bir terminal penceresi için sorun değil, aksi takdirde siyah-siyah ile sonuçlanacaksınız. İyi değil! Programın çalıştırılması, çıktıların bir metin dosyasında yakalanması ve daha sonra "daha fazla" veya "daha az" ile görüntülenmesi gibi, bu soruna da sahiptir.
printf ifadesinin sonunda bir renk belirtmek yerine varsayılanları geri yüklemek için bir kod var mı? Bunun C dilinde olması gerekiyor ama diğer yaklaşımları okumakla ilgilenirim.
Güncelleme: Hepinize teşekkür ederiz. Yanıtlarınız, başka yerlerde daha yararlı bilgiler bulmama yardımcı oldu. aşağıdaki gibi benim makro güncelleştirilmiş (not 31 kırmızı içindir ve aşağıda o yazım hatası sabit):
#define RESET_COLOR "\e[m"
#define MAKE_GREEN "\e[32m"
printf(MAKE_GREEN "this will show up green" RESET_COLOR "\n");
ben anlamakta yararlı Aşağıdaki bağlantılar nasıl bu kodlar işe bulundu:
Ya bu kaçış açıklıyor diziler yapmak ve taşınabilirlik gerekiyorsa ncurses kullanmak.http://bluesock.org/~willg/dev/ansi.html
http://www.linuxselfhelp.com/howtos/Bash-Prompt/Bash-Prompt-HOWTO-6.html
daha kaçış dizileri göstermektedir; Büyük resme almak için yararlıdır
Bağlantı için teşekkürler. – CSharper