2015-09-15 6 views
-1

Почему я не могу этого сделать;Динамическое изменение цвета системы в c

char backgroundColor='c',textColor='e'; 
printf("Please, enter background color: "); scanf("%c",&backgroundColor); 
printf("Please, enter text color: "); scanf("%c",&textColor); 
system("color "+backgroundColor+textColor); 

Как я могу решить эту проблему?

+1

Во-вторых, добавление символов в строку, как вы делали '' color "+ backgroundColor + textColor', не делает то, что вы думаете. '" color "' является указателем на символы. Чтобы добавить что-то к указателю, продвигается указатель по длине элемента (размер символа). Распечатайте цвет «+» и «» цвет «+ 2», и вы должны заметить, что начало строки пропущено. –

ответ

2

Вы не можете добавлять строки в C. Цвет консоли устанавливается color BF где B является цвет фона и F цвет переднего плана (текст), в шестнадцатеричном формате. Таким образом, color 1E установит синий фон и желтый текст. Кроме того, scanf нуждается в пробеле перед %c, как показано здесь, для очистки newline.

#include <stdio.h> 
#include <stdlib.h> 

int main(void) 
{ 
    char backgroundColor='c',textColor='e'; 
    char sysmes[] = "color BF"; 

    printf("Please, enter background color: "); 
    scanf(" %c",&backgroundColor); 

    printf("Please, enter text color: "); 
    scanf(" %c",&textColor); 

    sysmes[6] = backgroundColor; 
    sysmes[7] = textColor; 
    system(sysmes); 
    return 0; 
} 
Смежные вопросы