Вывод в файл и на консоль одновременно - C (СИ)
Формулировка задачи:
Привет Всем!
Подскажите как можно, и можно ли вообще, организовать вывод одновременно в файл и на консоль одной и тойже строки?
Хочу вызывать одну fprintf() типа как ниже:
второй вариант (Но что-то он мне не нравится )
Прошу помоши, а то что-то не соображаю сегодня
int main()
{
FILE *fout = fopen ( "outTest.txt", "a+" );
FILE * MyStream;
// MyStream = fout = stdout; тут получим MyStream = stdout :( А Как по другому
fprintf ( MyStream, " bla bla bla "); // в результате строка должна писаться и в "outTest.txt" и на консоль
}void DoubleOut ( FILE * file, const char * str )
{
fprintf ( stdout, "%s", str );
fprintf ( file, "%s", str );
}
int main()
{
FILE *fout = fopen ( "outTest.txt", "a+" );
DoubleOut ( fout, " bla bla bla " );
}Решение задачи: «Вывод в файл и на консоль одновременно»
textual
Листинг программы
#include <iostream>
#include <fstream>
int main()
{
std::fstream ofs("output.txt", std::ios::in | std::ios::out);
//Вывод в файл
for(size_t i=0; i<5; ++i)
ofs << i << std::endl;
//Установка позиции чтения на начало файла
ofs.seekp(std::ios::beg);
//Вывод содержимого всего файла в консоль
std::cout << ofs.rdbuf();
system("pause");
return EXIT_SUCCESS;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и выводом в консоль
- Создание объекта std::fstream для открытия файла
output.txtв режиме чтения и записи - Цикл for для записи 5-ти чисел в файл
output.txt - Установка позиции чтения на начало файла
- Чтение содержимого файла
output.txtи вывод его в консоль - Блокировка программы до нажатия клавиши
- Возврат успешного выполнения программы