2016-08-22 5 views
0

Я пытаюсь сделать строку меню в верхней части моей консоли в C.Печать строки на конкретные консольные координаты - C

Я успешно создал скелет моего экрана (границы и т.д.) но теперь я пытаюсь напечатать текст внутри моего бара.

Я попытался размещения и PRINTF и Sprintf в каждом разделе моего кода, однако, не может получить мой текст, показывая в правильном месте.

Какая у вас лучшая инструкция для использования?

код, который я пытался до сих пор:

void setup(void) { 
     printf("Hello World"); 
} 

int main(void) { 
setup_screen(); 
setup(); 
show_screen(); 
} 

, а также:

void setup(void) { 
     char * str[30]; 
     sprintf(str, "Hello World"); 
     puts(str); 
} 

int main(void) { 
setup_screen(); 
setup(); 
show_screen(); 
} 

Я также попытался поставить оба сегмента кода прямо в «основной» функции.

+0

Пожалуйста, покажите нам код, который не работает. –

+0

Покажите свои исследования/отладки. Сначала прочитайте страницу [Ask]. –

+0

@SouravGhosh Я обновил свой вопрос с объяснением моего кода. Я новичок в stackoverflow, поэтому благодарю вас за отзывы. – Chynna

ответ

2

Не существует единого способа печати на определенную часть консоли. Если это на ПК, есть библиотеки, которые вы можете использовать для размещения символа в определенных координатах экрана, , если вы находитесь в Windows. В Linux, если ваш термин настроен для эмуляции vt100 или какого-либо другого терминала, вы можете отправлять определенные последовательности символов, чтобы направить курсор на определенное место на экране, очистить экран и т. Д. Эти последовательности обычно начинаются с символа ESC (0x27). Google «vt100 escape-коды», и вы найдете список этих последовательностей.

Если все, что вы хотите, чтобы напечатать границы с текстом в нем, может быть, вы хотите иметь что-то вроде

char screenimage[24][80]; 

который представляет каждую позицию символа на экране 24 х 80. Заполните его пробелами, чтобы начать, затем сгенерируйте изображение по своему желанию. И, наконец, распечатать весь массив с чем-то вроде

for (int row=0; row < 80; row++) 
    for (int col=0; col < 24; col++) 
     printf("%c", screenimage[row][col]); 

Это было бы теоретически работать, если экран был именно 24x80 и печать обтекает к следующей строке. В противном случае вам нужно будет скорректировать код.

+0

Я пробовал вставить свой код в функцию 'setup', показанную в моем обновленном вопросе ... это заставило весь мой код перестать работать и просто закрыть консоль при открытии программы. Я включил «привет» перед% c, который печатал всевозможные странные вещи.Теперь я попытался ввести значения высоты и ширины экрана так: 'char screenimage [screen_width()] [screen_height()]; for (int row = 0; row Chynna

+0

Некоторая дополнительная информация, которая может указывать на то, что это связано с остальной частью моего кода: добавление 'printf (« Hello World ») к моей основной функции (и моей функции настройки) не возвращает никакого вывода на консоль. Я новичок в кодировании на C, поэтому не могу сказать, нормально это или нет. – Chynna