Исходники.Ру - Программирование
Исходники
Статьи
Книги и учебники
Скрипты
Новости RSS
Магазин программиста

Ishodniki.Ru » Online книги » C++ Builder по шагам

Шаг 8 - Консоль [спецификаторы printf, функции getc, getchar]

Казалось бы, какая устаревшая вещь. Тем нне менее, я считаю, что уметь с ней работать необходимо, даже в наш виндусиный век ;). Например, приложениям сервера или чего-то в этом роде предпочтительней работать в консольном режиме, какие-то классы, например строковый, тестировать удобнее в консоли. Короче, приступлю к объяснению.

Консоль в C++Builder сильно напоминает юниксовую, тот же stdin, stdout и все в том же духе. При запуске программа как консоль выводит обыкновенное окно "Сеанс МС-ДОС", с интутитивным интерфейсом :). Чтобы создать консольное приложение, нужно выбрать команду File -> New, и в списке создаваемых объектов выбрать Console Wizard. После этого выйдет такое диалоговое окно:

gif/8_1.gif (3114 b)

Все флажки обозначают то, что написано. Можно выбрать язык исходных кодов, разрешить или запретить использование VCL. При снятом флажке VCL можно выбрать или снять флажок multi-threaded, то есть многопоточный. В моем примере я обойдусь одним потоком. Флажок Console Application дает возможность выбрать, исполняется прграмма как консольное окно или как Win32. Все различие в том, что будет прописана функция WinMain или просто Main.

Жмите OK и смотрите жиденький код в Редакторе. После Win32 Application как-то не впечатляет. Но тем не менее. В примере будет решена задача отображения в ответ на ввод символа его ASCII кода. При нажатии клавиши ESC, если не ошибаюсь, код #27, выход из программы. Обычный бесконечный цикл, стандарт для ДОС-программ. Текст должен быть такой:

#include <stdio.h>
#pragma hdrstop

#pragma argsused
int main(int argc, char* argv[])
{
	char c=getc(stdin);
	while(c!=27)
	{
		if (c!=10)
			printf("\r\n%i",c);
		c=getc(stdin);
	};
	getchar();
	return 0;
}

В первой строке подключается заголовочный файл, аналогичный <iostream.h>. Он отвечает за ввод-вывод. Одна из него - функция getc() возвращает символ из стандартного ввода stdin. Потом идет цикл. Коды 27 и 10 - это ESC и ENTER. Функция printf() форматирует строку, подставляя вместо спецификаторов преобразованные значения. Спецификаторы для printf, печатаемые после "%":

  • Числа:
    • d - целое без знака
    • i - целое без знака
    • u - целое со знаком
    • o - восьмеричное со знаком
    • x - шестнадцатеричное в ниэнем регистре
    • X - шестнадцатеричное в верхнем регистре
    • f - плавающее как [-]dddd.dddd
    • e - плавающее с экспонентой
    • g - два предыдущих в зависимости от значения
    • E,G - два предыдущих с экспонентой в верхнем регистре
  • Символы:
    • c - одиночный символ
    • s - NULL-terminated строка
  • Указатели:
    • n - что-то вроде указателя на количество выдаваемых символов
    • p - печатает указатель в формате операционной системы сегмент:смещение.

Я привожу спецификаторы так подробно, потому что они встретятся далее в строках типа AnsiString и прочих.

Последняя функция getchar() вводит один символ с клавиатуры, просто чтобы окно сразу не закрылось.

Напоследок. Помните, что на этой древности многие программисты писали хорошие и очень хорошие программы! ;)

Предыдущий шаг | Оглавление | Следующий шаг

Рассылка новостей
Рейтинги
© 2007, Программирование Исходники.Ру