Доброго времени суток,
У меня возникла следующая проблема — необходимо перенаправить стандартный вывод в стандартный ввод напрямую, т.е. чтобы при использовании printf() инфу тут же можно было считать с помощью scanf() и т.д. Приложение под OpenGL без текстовых консолей. Пишу на VC++ ED.
Единственный способ, который удалось найти
freopen("tmp.tmp","wt",stdout);
freopen("tmp.tmp","rt",stdin);
Но смущает следующее. Во-первых, создается файл на диске. Во-вторых, по мере поступления инфы, файл разрастается... не смещать же указатель на начало файла после каждого printf()??
Вообще задача банальная — хочется иметь все вкусности printf(), при этом вывод производить на графическую консоль, либо в файл.
Пробовал также использовать dup2() — не помогло. Такое впечатление, что он вообще не работает...
Думаю еще про вариант сделать перегрузку стандартного printf(), но это все какие-то костыли.
Кто-нибудь знает более элегантный способ?
Заранее спасибо.
PS Хочется обойтись стандартным C без Win API, т.к. позже планирую переносить код под *nix.