Zmiana koloru wyświetlanego tekstu w konsoli

0

Chciał bym nauczyć się zmieniać kolor wyświetlanego tekstu.
Kod wygląda tak:

#include <stdio.h>
int main (void)
{
 char* autor = "Kamilka";
 char* opel = "OPEL";
 char* insignia = "INSIGNIA";
 char* astra = "ASTRA";
 char* laguna = "LAGUNA";
 char* opla = "OPLA";
 char* insignie = "INSIGNIE";
 char* astre = "ASTRE";
 char* lagune = "LAGUNE";
 printf(" ***** ROZPOCZECIE PROGRAMU ***** \n\n\n");
 printf(" Witamy w programie: %s \n\n", autor);
 printf(" Moj obecny samochod to: %s %s \n\n", opel, insignia);
 printf(" %s mi sie znudzila i zmienilem na: %s \n" , insignia, astre);
 printf(" %s jednak nie przypadla mi \n do gustu i kupilem nowa: %s \n", astra, lagune);
 printf(" %s okazala sie jednak szrotem i ponownie kupilem %s \n\n", laguna, opla);
 printf(" ***** TERAZ ZMIANA NAZW ZMIENNYCH ***** \n\n\n");
 char* corsa = "CORSA";
 printf(" Obecnie moj samochod to %s %s \n", opel, corsa);
 corsa = "corsunia";
 printf(" Tak bardzo lubie swojego %s ze nazwalem go %s \n", opla, corsa);
char* corsidlo = "CORSIDLO";
 printf(" ale nazwa %s okazala sie lipna i nazwalem ja %s \n", corsa, corsidlo);
 printf(" \n\n\n");

    return 0;
}

Chciał bym móc zmienić kolory wyświetlanych zmiennych.

2

Poczytaj o ncurses oraz ansi escape codes .

0

Dla MS Windows https://msdn.microsoft.com/en-us/library/ms682073(VS.85).aspx
Dla systemów GNU/Linux lub innych POSIX, kody ANSI.

0

@gk1982 - no niestety, nie działa.

#include<stdio.h>
#include<conio.h>
 
int main( void )
{
   textcolor(BLUE);
   printf("TEST, TEST, TEST, TEST");
   getch();
   return 0;
}

Cały czas wywala błąd przy:

textcolor(BLUE);

** błędy:**

error = expected (;) (,) (,) or ) before numeric constatnt
lub
BLUE undecleared (first use in this function)

Kombinowałem z zadeklarowaniem:

#include<stdio.h>
#include<conio.h>

int main( void )


{
    void textcolor(int blue)
{

  textcolor(blue);


  }
   printf("TEST TEST TEST TEST");
  getch();
   return 0;
}

i teraz jest bez błędów ale z koloru nici. Kombinowanie na zasadzie zmiany BLUE na blue czy na 4 w/g listy https://code-reference.com/c/conio.h/textcolor
nic nie daje.

0

@gavallon: a szukałeś w ogóle? Przecież opisów jak to zrobić w C jest pełno:

#include <stdio.h>
#include <windows.h>

int main() 
{
	HANDLE consoleHandler = GetStdHandle(STD_OUTPUT_HANDLE);
	int color = 1;
	for (; color < 255; ++color) {
		SetConsoleTextAttribute(consoleHandler, color);
		puts("Hello world");
	}
	return 0;
}
0

Właśnie szukam.
Chcę zmienić tylko i wyłącznie kolor tekstu w jednej linii:

#include <stdio.h>
#include <conio.h>

int main (void)

{



char* autor = "Kamilka";
 char* opel = "OPEL";
 char* insignia = "INSIGNIA";
 char* astra = "ASTRA";
 char* laguna = "LAGUNA";
 char* opla = "OPLA";
 char* insignie = "INSIGNIE";
 char* astre = "ASTRE";
 char* lagune = "LAGUNE";


 printf (" ***** ROZPOCZECIE PROGRAMU ***** \n\n\n");

printf(" Witamy w programie: %s \n\n", autor);
 printf(" Moj obecny samochod to: %s %s \n\n", opel, insignia);
 printf(" %s mi sie znudzila i zmienilem na: %s \n" , insignia, astre);
 printf(" %s jednak nie przypadla mi \n do gustu i kupilem nowa: %s \n", astra, lagune);
 printf(" %s okazala sie jednak szrotem i ponownie kupilem %s \n\n", laguna, opla);
 printf(" ***** TERAZ ZMIANA NAZW ZMIENNYCH ***** \n\n\n");
 char* corsa = "CORSA";
 printf(" Obecnie moj samochod to %s %s \n", opel, corsa);
 corsa = "corsunia";
 printf(" Tak bardzo lubie swojego %s ze nazwalem go %s \n", opla, corsa);
char* corsidlo = "CORSIDLO";
 printf(" ale nazwa %s okazala sie lipna i nazwalem ja %s \n", corsa, corsidlo);
 printf(" \n\n\n");
getch();
    return 0;
}

linia z tekstem ROZPOCZĘCIE PROGRAMU a reszta ma zostać jak jest.
To co zapodałeś to całkiem co innego o co mi chodzi.


No i raz jeszcze sorry za wątek ale traktuję go jako "przy okazji". Siedzę nad int/while/for/#define/EOF/ i kilkoma innymi i zaraz będę mądrzejszy ... :-)
tylko te kolorki mi żyć nie dają i z głowy wyjść nie mogą :-)
No i siedząc nad ANSI C już widzę pierwsze byki. Po co mi tyle CHAR wyżej to ja nie wiem :-) (rozkminiam #define)

1

Oj człowieku... Błąd to jest w Tobie. Tak, tak w Tobie, bo zamiast się wczytać w dokumentacje, poszukać na forach to wklejasz kody zupełnie bez sensu i pytasz: "Czemu nie działa?"

To tutaj: https://pastebin.com/VipUk2v3 to już jest w ogóle ROTFL. Czemu Ty podstaw nie ogarniesz najpierw? Przecież tyle razy Ci ludzie trąbili o to. Używasz printf'ów do wywalania samego tekstu, definiujesz funkcję wewnątrz innej funkcji, używasz conio.h, którego wszyscy unikają gdzie się da. Dobra windows.h też jest nieprzenośny więc jest to jakiś argument...

Albo ten kolor w konsoli. Przecież rozwiązanie podane masz na tacy! Dosłownie na tacy. Starczy nawet zakomentować pętlę i klamrę zamykającą, żeby zobaczyć efekty!
Odrobina wysiłku w ogóle, bo to jest jakaś masakra i tłumaczenie się tym, że jest się początkującym naprawdę Cię nie ratuje, bo coś takiego jak pętle to się na studiach na pierwszych zajęciach z programowania omawia.

0

Już to rozkminiłem :-)

#include<stdio.h>
#include <windows.h>

int main( )

{

HANDLE kolor;
kolor = GetStdHandle( STD_OUTPUT_HANDLE );
SetConsoleTextAttribute( kolor, 1 );
printf("TEST TEST TEST TEST TEST");

kolor = GetStdHandle( STD_OUTPUT_HANDLE );
SetConsoleTextAttribute( kolor, 7 );
     return 0;
}

Grzesiu, ja się uczę. Będę to powtarzał przez najbliższe miesiące a to że w gorącej wodzie kąpany to już inna bajka.

Na razie jest tak. Teraz będę uczył się to rozbudować i uprościć.

#include <stdio.h>
#include <windows.h>

int main (void)

{



char* autor = "Kamilka";
 char* opel = "OPEL";
 char* insignia = "INSIGNIA";
 char* astra = "ASTRA";
 char* laguna = "LAGUNA";
 char* opla = "OPLA";
 char* insignie = "INSIGNIE";
 char* astre = "ASTRE";
 char* lagune = "LAGUNE";

HANDLE kolor;
kolor = GetStdHandle( STD_OUTPUT_HANDLE );
SetConsoleTextAttribute( kolor, 1 );
 printf (" ***** ROZPOCZECIE PROGRAMU ***** \n\n\n");

 kolor = GetStdHandle( STD_OUTPUT_HANDLE );
SetConsoleTextAttribute( kolor, 7 );

printf(" Witamy w programie: %s \n\n", autor);
 printf(" Moj obecny samochod to: %s %s \n\n", opel, insignia);
 printf(" %s mi sie znudzila i zmienilem na: %s \n" , insignia, astre);
 printf(" %s jednak nie przypadla mi \n do gustu i kupilem nowa: %s \n", astra, lagune);
 printf(" %s okazala sie jednak szrotem i ponownie kupilem %s \n\n", laguna, opla);
 printf(" ***** TERAZ ZMIANA NAZW ZMIENNYCH ***** \n\n\n");
 char* corsa = "CORSA";
 printf(" Obecnie moj samochod to %s %s \n", opel, corsa);
 corsa = "corsunia";
 printf(" Tak bardzo lubie swojego %s ze nazwalem go %s \n", opla, corsa);
char* corsidlo = "CORSIDLO";
 printf(" ale nazwa %s okazala sie lipna i nazwalem ja %s \n", corsa, corsidlo);
 printf(" \n\n\n");
getch();
    return 0;
}

Ważne że jest efekt którego oczekiwałem. No niestety, na błędach się człowiek uczy.
Po co mi conio.h?
No właśnie kolega wyżej to zapodał i było wymagane do zmiany textcolor & textbackgrund

1 użytkowników online, w tym zalogowanych: 0, gości: 1