Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Содержимое консоли на печать и в файл


Автор: Solomon 29.5.2006, 08:46
У меня такая проблемка... Моя программа рашает ... нууу... неважно что она решает... короче решение выводится на экран и мне надо это же решение сохранить в файл и вывести на печать...
Можно ли сохранять в файл не по строчке, а после вывода на экран просто сохранить содержимое консоли... и еще как это содержимое консоли вывести на принтер??? 

Автор: Romikgy 29.5.2006, 09:23
если просто то так
tvoya_proga.exe > file.txt
и теперь этот текстовый мож печатать или еще чего smile
если сложнее из проги то
GetConsoleScreenBufferInfo
ReadConsoleOutputCharacter
вроде эти 2 функции подойдут 

Автор: Solomon 29.5.2006, 09:32
Из проги нужно...
Будь добр, опиши функции  GetConsoleScreenBufferInfo и ReadConsoleOutputCharacter немного поподробнее.   smile  

Автор: Solomon 29.5.2006, 10:02
Я нашол описание этих функций, но обсолютно ничего не понял  smile 

 smile  smile  smile  smile  

Автор: Romikgy 29.5.2006, 10:54
Что то типа такого, только еще размеры консоли что само брало надо сделать
Код

#include <cstdlib>
#include <iostream>
#include <windows.h>

using namespace std;

int main(int argc, char *argv[])
{
    FILE * fout;
    char buf[80*25];
    DWORD rd;
    COORD crd;
    crd.X=0;
    crd.Y=0;
    cout<<"Privet\nChuvak\n\n\n\n\n\nGuGu\n";
    ReadConsoleOutputCharacter(GetStdHandle(STD_OUTPUT_HANDLE),buf,80*25,crd,&rd);
    fout=fopen("d:\\out.out","wb");
    fwrite(buf,80,25,fout);
    fclose(fout);
    system("PAUSE");
    return EXIT_SUCCESS;
}

 

Автор: Solomon 29.5.2006, 13:19
Romikgy, Работает, но блина вопервых нераспознает русский шрифт, а во вторых нераспознает знаки табуляции и новой строки... получается сплошной текст... Впринципе... впринципе я смогу сделать построчный вывод в файл с помощью потоков, правда гемороя много smile. Ладно, будем счтитать вопрос с файлом закрытым...
А как насчет вывода на печать... вот то с чем я вообще не работал.  smile  

Автор: Romikgy 29.5.2006, 15:27
Цитата(Solomon @  29.5.2006,  12:19 Найти цитируемый пост)
А как насчет вывода на печать... вот то с чем я вообще не работал. 

И я не работал , поиском попробуй воспользоватся
Цитата(Solomon @  29.5.2006,  12:19 Найти цитируемый пост)
нераспознает русский шрифт

Видать с кодировками чет
Цитата(Solomon @  29.5.2006,  12:19 Найти цитируемый пост)
нераспознает знаки табуляции и новой строки... получается сплошной текст..

Тыже попросил читать из консоли , а консоль это и есть массив символов,
не понятно что ты хошь сделать , может можно будет перенаправить консоль 

Автор: Solomon 29.5.2006, 16:50
Цитата(Romikgy @  29.5.2006,  14:27 Найти цитируемый пост)
 поиском попробуй воспользоватся


Да искал... вообще ничего дельного не нашол smile
 

Автор: B3cK 29.5.2006, 17:04
Все, что направляешь в поток cout дублируй и направляй в файловый поток txt файла.
У тебя в txt файле получится полная с таким же форматом копия консоли. 
Думается мне, что другим образом сохранить форматирование не получится... 

Автор: bsa 29.5.2006, 17:14
Я так понял, ОС у тебя - Windows?
Ты хочешь печатать из консольной программы (глупость какая, имхо). Есть несколько вариантов:
1. Вывод на принтер, через стандартное устройство (prn или lpt, не помню). Но будут проблемы с русскими буквами.
2. Использовать Win32 API ( http://www.msdn.com/ ). 

Автор: Solomon 29.5.2006, 17:32
bsa, что совсем нельзя распечатать содежимое консоли???  smile 
А что если сделать так. Пользователь вводит имя файла *.txt в котором я  зарание сохраняю решенииеи распечатывается уже этот файл... Можно ли реализовать это программно??  

Автор: bsa 29.5.2006, 21:08
Все можно. Другой вопрос, а нужно? Ты сам то уверен, что тебе именно это необходимо?
Под Windows есть свой API. Его надо юзать. Там есть стандартные диалоги настройки печати и т.д. Как ты с ними из консоли собрался работать, я не понимаю. Там работа строится путем "рисования на холсте" (по крайней мере, я так этот процесс понял).
И вообще, зачем тебе под Windows нужна консольная программа, которая и на экран выводит, и в файл, и на печать? Обычно, в консоли работают всякие утилиты, которые можно вызывать из bat файлов, для организации более сложных действий. 

Автор: bel_nikita 29.5.2006, 21:17
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/console_functions.asp
не забудь про UNICODE. Что касается сплошного текста, так размер консоли вширину фиксирован, вот и руби этот массив на 25 или 50 символов в зависимости от ширины консоли. 

Автор: Solomon 30.5.2006, 00:15
Цитата(bsa @  29.5.2006,  20:08 Найти цитируемый пост)
Все можно. Другой вопрос, а нужно?
 нужно... Как можно реализовать на MFC ввод матрици произвольной размерности...??? я неочень с MFC дружу... Да и сама прога уже готова у меня... осталось сделать вывод на принтер... надеюсь получится... не найдется решения значить что же не судьба... Мне это сильно надо, но не жизненно важный вопрос  smile

Добавлено @ 00:17 
Вообще мне надо хорошую программу для решения симплекс метода(Линейное программирование)... вот и мучаюсь... Полгода пары гулял, а теперь, что бы оценку хорошую поставили требуют прогу хорошую, что бы могли они похвастаться перед другими учебными заведениями... Вот и мучаюсь... незнаю что получится, но что то получится smile 

Автор: Rockie 30.5.2006, 01:58
Цитата(Romikgy @  29.5.2006,  09:23 Найти цитируемый пост)
если просто то так
tvoya_proga.exe > file.txt

Romikgy, что это за чудо? это для какого-то определенного компилятора? или системы? =) пачиму у миня не работает? =(   http://forum.vingrad.ru/html/emoticons/smile.gif 

Автор: Solomon 30.5.2006, 02:46
Rockie, работает, только это не программно... smile  Заходишь в командную строку находишь свою программу и запускаешь её на выполнение и при этом оератором >> перенаправляешь поток вывода в файл, т.е. то что твой exe файл должен был вывести на экран сохранится... 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)