Forum
Tipps
News
Menu-Icon

Schriftfarben in Konsole ändern.

Hi,

ich möchte gerne die Schriftfarbe in der Konsole ändern.

bisher hab eich es über den Befehl
system("color xx");
gemacht. Aber das bringt mir nichts. Ich würde gerne einzelne Wörter unterscheidlich färben.
Geht das eignetlich? Wenn ja wie?

Ich möchte gerne Die Spalte Eingabe und Ausgabe unterschiedlich gestalten.

Danke schon mal für die Hilfe.

/*
Projektname: Handelskalkulation
Programmierer:
Erstellt am: 28.03.2008
Letzte Änderung: 04.04.2008
*/

//Einbinden der Bibliotheken
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

//Variablen deklarieren
float
      //Variablen Einagbae
      listeneinkaufspreis,
      lieferskonto,
      lieferrabatt,
      bezugskosten,
      handlungskosten,
      gewinnzuschlag,
      kundenskonto,
      kundenrabatt,
      umsatzsteuer,
      //Variablen Verarbeitung
      zieleinkaufpreis,
      bar_einkaufspreis,
      einstandspreis,
      selbstkostenpreis,
      bar_verkaufspreis,
      zielverkaufspreis,
      listenverkaufspreis_netto,
      listenverkaufspreis_brutto;
     
//Main-Funktion
int main()
{
    //Ändern der Hintergrundfarbe und der Schriftfarbe
    system("color F0");
    //Programmüberschrift
    printf("\t\tH A N D E L S K A L K U L A T I O N\n\n\n");
    //Abfrage aller benötigten Werte
    printf("Bitte machen Sie folgende Eingaben (z.B: 12.4):\n\n");
    printf(" Listeneinkaufspreis in Euro:\t");
    scanf("%f",&listeneinkaufspreis);
    printf("\n Lieferskonto in Prozent:\t");
    scanf("%f",&lieferskonto);
    printf("\n Liefererrabatt in Prozent:\t");
    scanf("%f",&lieferrabatt);
    printf("\n Bezugskosten in Euro:\t\t");
    scanf("%f",&bezugskosten);
    printf("\n Handlungskosten in Prozent:\t");
    scanf("%f",&handlungskosten);
    printf("\n Gewinnzuschlag in Prozent:\t");
    scanf("%f",&gewinnzuschlag);
    printf("\n Kundenskonto in Prozent:\t");
    scanf("%f",&kundenskonto);
    printf("\n Kundenrabatt in Prozent:\t");
    scanf("%f",&kundenrabatt);
    printf("\n Umsatzsteuer in Prozent:\t");
    scanf("%f",&umsatzsteuer);
   
    //Berechnung des Ziel-Einkaufs-Preises
    zieleinkaufpreis=listeneinkaufspreis-(listeneinkaufspreis/100*lieferrabatt);
    bar_einkaufspreis=zieleinkaufpreis-(zieleinkaufpreis/100*lieferskonto);
    einstandspreis=bar_einkaufspreis+bezugskosten;
    selbstkostenpreis=einstandspreis+(einstandspreis/100*handlungskosten);
    bar_verkaufspreis=selbstkostenpreis+(selbstkostenpreis/100*gewinnzuschlag);
    zielverkaufspreis=bar_verkaufspreis+(bar_verkaufspreis/100*kundenskonto);
    listenverkaufspreis_netto=zielverkaufspreis+(zielverkaufspreis/100*kundenrabatt);
    listenverkaufspreis_brutto=listenverkaufspreis_netto+(listenverkaufspreis_netto/100*umsatzsteuer);
 
    //Ausgabe der Daten
    //Formatierung mit Escape-Sequenzen \n und \t
    //  \n = Zeilenumbruch
    //  \t = Tabulator
    printf("\n\n    Postion\t\t\tEingabe\t\t\tAusgabe");
    printf("\n\n 1. Listen-Einkaufspreis:\t%.4f Euro\t\t%.4f Euro", listeneinkaufspreis,listeneinkaufspreis);
    printf("\n 2. Lieferrabatt:\t\t%.4f Prozent\t\t%.4f Euro",lieferrabatt,(listeneinkaufspreis/100*lieferrabatt));
    printf("\n 3. Ziel-Einkaufspreis:\t\t\t\t\t%.4f Euro",zieleinkaufpreis);
    printf("\n 4. Lieferskonto:\t\t%.4f Prozent\t\t%.4f Euro",lieferskonto,(zieleinkaufpreis/100*lieferskonto));
    printf("\n 5. Bar-Einkaufspreis:\t\t\t\t\t%.4f Euro",bar_einkaufspreis);
    printf("\n 6. Bezugskosten:\t\t%.4f Euro\t\t%.4f Euro",bezugskosten,bezugskosten);
    printf("\n 7. Einstandspreis:\t\t\t\t\t%.4f Euro",einstandspreis);
    printf("\n");
    printf("\n 8. Handlungskosten:\t\t%.4f Prozent\t\t%.4f Euro",handlungskosten,(einstandspreis/100*handlungskosten));
    printf("\n 9. Selbstkostenpreis:\t\t\t\t\t%.4f Euro",selbstkostenpreis);
    printf("\n10. Gewinnzuschlag:\t\t%.4f Prozent\t\t%.4f Euro",gewinnzuschlag,(selbstkostenpreis/100*gewinnzuschlag));
    printf("\n11. Bar-Verkaufspreis:\t\t\t\t\t%.4f Euro",bar_verkaufspreis);
    printf("\n12. Kundenskonto:\t\t%.4f Prozent\t\t%.4f Euro",kundenskonto,(bar_verkaufspreis/100*kundenskonto));
    printf("\n13. Zielverkaufspreis:\t\t\t\t\t%.4f Euro",zielverkaufspreis);
    printf("\n14. Kundenrabatt:\t\t%.4f Prozent\t\t%.4f Euro",kundenrabatt,(zielverkaufspreis/100*kundenrabatt));
    printf("\n15. Listenverkaufpreis netto:\t\t\t\t%.4f Euro",listenverkaufspreis_netto);
    printf("\n");
    printf("\n16. Umsatzsteuer:\t\t%.4f Prozent\t\t%.4f Euro",umsatzsteuer,(listenverkaufspreis_netto/100*umsatzsteuer));
    printf("\n17. Listenverkaufspreis brutto:\t\t\t\t%.4f Euro",listenverkaufspreis_brutto);
    printf("\n");
   
    system("pause");
    return 0;
}

Antworten zu Schriftfarben in Konsole ändern.:

Ist Unix, oder?

Unter Win32 kannst das mit WriteConsoleOutput machen.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ich wollte das ganze für Windows wissen...

nur noch ein paar Fragen ;D
Wie funktioniert der Befehl?
Was muss ich eingeben, wenn ich "Hallo Welt" ausgebn möchte, und das ganze in roter Schrift?


und wenn ich schon beim Fragenstellen bin...wie funktioniert das mit Unix?

« Letzte Änderung: 06.04.08, 14:51:08 von Andre S. »
MSDN Link

Rest kannst du daraus entnehmen.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
1 Leser hat sich bedankt

Also ich habe jetzt bei nem Klassenkameraden den Befehl cprintf() gelesen.

Das Problem ist den kennt mein Compiler nicht...bzw ich weiß nicht in welcher bilbiothek ich das finde.

Ich arbeite mit dem Compiler dev-cpp.
Ich weiß das Borland da sowas liefert. ::)

aber mich würde eine Möglichkeit interessieren die möglichst bei jedm funktioniert  ;D

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Es gibt auch noch die Möglichkeit, das mit SetConsoleTextAttribute zu machen.

#include <windows.h>

HANDLE hConsole;
hConsole = GetStdHandle( STD_OUTPUT_HANDLE );
//Farbe setzen
SetConsoleTextAttribute( hConsole, FOREGROUND_BLUE | FOREGROUND_GREEN );
std::cout << "Hallo!" << std::endl;
//Konsole zurücksetzen (weiss auf schwarz)
SetConsoleTextAttribute( hConsole, 7 );
Eine Übersicht über die möglichen Attribute gibts hier:
http://msdn2.microsoft.com/en-us/library/ms682088(VS.85).aspx
« Letzte Änderung: 11.04.08, 14:57:44 von Lisaa »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ich hab das lieder nicht ganz verstanden ??? ::)

Kann ich auch angeben wiviel Grün-, Blau- oder Rot-Anteile die Farbe haben soll? oder wie misch ich die Farben?


Auf jedenfall klappt das schonmal sehr gut. Vielen Dank :)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Es gibt die drei Grundfarben rot, blau und grün. Die kannst du mischen. Entweder über die Makros oder über die entsprechenden Zahlenwerte:

#define FOREGROUND_BLUE      0x0001 /* text color contains blue. */
#define FOREGROUND_GREEN     0x0002 /* text color contains green. */
#define FOREGROUND_RED       0x0004 /* text color contains red. */
#define FOREGROUND_INTENSITY 0x0008 /* text color is intensified. */
z.B.
FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED = 7 = weiß
FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY = 11 = cyan
FOREGROUND_RED| FOREGROUND_GREEN | FOREGROUND_INTENSITY = 14 = gelb
FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY = 13 = magenta
usw. einfach ein bischen rumprobieren. Oder ne Seite suchen, auf der die Farben aufgeführt werden. Gibts sicher auch.

EDIT: Oder du schreibst dir schnell ein Programm, was die Farben durchprobiert:
#include <iostream>
#include <string>
#include <windows.h>

int main( int argc, char* argv[] )
{
    std::string s = "hallo!";
   
    HANDLE hConsole;
    hConsole = GetStdHandle( STD_OUTPUT_HANDLE );
    for ( int i = 0; i < 16; ++i ) {
        SetConsoleTextAttribute( hConsole, i );
        std::cout << i << ": " << s << std::endl;
    }
    SetConsoleTextAttribute( hConsole, 7 );
 
    system( "PAUSE" );
    return( 0 );
}
 
« Letzte Änderung: 14.04.08, 10:39:45 von Lisaa »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Zitat von: Lisaa

EDIT: Oder du schreibst dir schnell ein Programm, was die Farben durchprobiert:

[quote

 ;D;D;D
Da ist das Problem...ich kann (noch) nicht schnell programmieren  ;)


Noch ne andere Frage:
int main( int argc, char* argv[] )
ist bringt mir die Argumente in der main()-Funktion?
ich lass das immer leer...also:
int main() { ... }
 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Da ist das Problem...ich kann (noch) nicht schnell programmieren  ;)
Das Programm ist eigentlich schon fertig, brauchst nur den Code zu kopieren...

Zitat
ist bringt mir die Argumente in der main()-Funktion?
ich lass das immer leer...also:
int main() { ... }
Dadurch kriegst du Argumente in dein Programm (z.B. von der Kommandozeile, d.h. du kannst ein Programm mit Optionen aufrufen (z.B. myProg -doCoolStuff). Die meisten  Compiler akzeptieren es, wenn du es leer lässt, der Standard sieht jedoch die Argumente vor. Aber wenn du sowas eh nicht nutzt, ist es egal...

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

achso...

Danke. ;D

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
    //Alle Werte richtig eingegeben?
    printf("\n\n");
    char test = 'n';
    while (test!='j')
    {
    SetConsoleTextAttribute(hConsole,11);
    printf("Sind alle Zahlen richtig?\nj = ja; zum korrigieren Zahl eingeben: ");
    SetConsoleTextAttribute( hConsole,7);
    scanf("%c",&test);
    switch(test)
    {
         case '1': printf("1. Listeneinkaufspreis in Euro:\t");
                   SetConsoleTextAttribute( hConsole,10);
                   scanf("%f",&listeneinkaufspreis);
                   SetConsoleTextAttribute( hConsole,7);
                   break;
         case '2': printf("\n2. Lieferskonto in Prozent:\t");
                   SetConsoleTextAttribute( hConsole,10);
                   scanf("%f",&lieferskonto);
                   SetConsoleTextAttribute( hConsole,7);
                   break;
         case '3': printf("\n3. Liefererrabatt in Prozent:\t");
                   SetConsoleTextAttribute( hConsole,10);
                   scanf("%f",&lieferrabatt);
                   SetConsoleTextAttribute( hConsole,7);
                   break;
         case '4': printf("\n4. Bezugskosten in Euro:\t");
                   SetConsoleTextAttribute( hConsole,10);
                   scanf("%f",&bezugskosten);
                   SetConsoleTextAttribute( hConsole,7);
                   break;
         case '5': printf("\n5. Handlungskosten in Euro:\t");
                   SetConsoleTextAttribute( hConsole,10);
                   scanf("%f",&handlungskosten);
                   SetConsoleTextAttribute( hConsole,7);
                   break;
         case '6': printf("\n6. Gewinnzuschlag in Prozent:\t");
                   SetConsoleTextAttribute( hConsole,10);
                   scanf("%f",&gewinnzuschlag);
                   SetConsoleTextAttribute( hConsole,7);
                   break;
         case '7': printf("\n7. Kundenskonto in Prozent:\t");
                   SetConsoleTextAttribute( hConsole,10);
                   scanf("%f",&kundenskonto);
                   SetConsoleTextAttribute( hConsole,7);
                   break;
         case '8': printf("\n8. Kundenrabatt in Prozent:\t");
                   SetConsoleTextAttribute( hConsole,10);
                   scanf("%f",&kundenrabatt);
                   SetConsoleTextAttribute( hConsole,7);
                   break;
         case '9': printf("\n9. Umsatzsteuer in Prozent:\t");
                   SetConsoleTextAttribute( hConsole,10);
                   scanf("%f",&umsatzsteuer);
                   SetConsoleTextAttribute( hConsole,7);
                   break;
         default:  break;
    }
}
   

Warum wird die Frage, ob alle Eingaben richtig sind 2x Ausgegeben? (Zeile 7)
Ich komm da einfach nciht drauf ???

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Da ist wahrscheinlich noch ein Zeichen im Buffer - warum weiss ich auch nicht. Hat wahrscheinlich irgendwas mit dem scanf zu tun. Kannst du z.B. so beheben:

while (test!='j')
{
    fflush( stdin );
    SetConsoleTextAttribute(hConsole,11);
    printf("Sind alle Zahlen richtig?\nj = ja; zum korrigieren Zahl eingeben: ");
    [...]
Ist allerdings kein wirklich guter Stil...

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Okay...es geht.
fflush löscht also den Buffer.

Wie würde denn ein guter Stil aussehen?


« packetfilterVisual Basic 2008 Pfad suchen und in textbox eintragen »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Eingabefelder
Als Eingabefelder werden in einem Programm oder in Online-Formularen die Stellen bezeichnet, an denen Informationen eingetippt werden können. Die Beschriftung neben ...

Eingabeaufforderung
Die Eingabeaufforderung ist ein Begriff aus dem IT-Bereich und bezeichnet eine Markierung auf der Kommandozeile, welche auf die Stelle verweist, an der man Kommandozeilen...

Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet den unkompilierten Programm-Code einer Software. Quell- oder Programm-Code ist der auch für Menschen lesbare Co...