Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
Dragokas
Эксперт WindowsАвтор FAQ
15777 / 6625 / 799
Регистрация: 25.12.2011
Сообщений: 10,253
Записей в блоге: 16
#1

Чтение из stdin и запись в stdout бинарной информации - C++

10.06.2013, 02:40. Просмотров 1791. Ответов 3
Метки нет (Все метки)

Привет.
Посмотрите, пожалуйста.

Мне нужен т.н. "прозрачный" ехе-шник, чтобы он передавал в StdOut тоже, что и получил из StdIn.
Нечто вроде:

Bash
1
cpp.exe < test.bin > ret.bin
При этом на входе бинарная информация.

Вот на что меня хватило:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
 
int main()
{
  char buff[50];
  size_t n;
 
  while ( ( n = fread(buff, 1, sizeof buff - 1, stdin) ) > 0 ) 
  {
    buff[n] = '\0';
    fwrite(buff, strlen(buff), 1, stdout);
  }
 
  return 0;
}
Я вообщем-то и не знаю умеет ли сам поток передавать любую бинарную информацию.
Вот как раз и проверим. Тест-файл с 0...255 байтами прилагается.
Вложения
Тип файла: rar Stream.rar (550 байт, 17 просмотров)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2013, 02:40     Чтение из stdin и запись в stdout бинарной информации
Посмотрите здесь:

stdin, stdout, stderror - C++
Эти три файловых дискриптора, получаемые программами при запуске они указывают на реальные файлы, который файловая система создает? Когда я...

Чтение UNICODE символов из STDOUT процесса - C++
У меня есть процесс (cmd.exe) создан через WINAPI функцию CreateProcess. К процессу подключено 2 переменных типа HANDLE из которых в свою...

си, чтение строки из stdin с пробелами - C++
Доброго времени суток, Надо записать строку в char * str. scanf(&quot;%s&quot;,str) читает до пробела, gets срабатывает сразу при вызове,...

if (feof(stdin)) while(!feo(stdin)) while(!feof(stdin) ) - C++
Как с ними правильно работать в Си?? Объясните принцип пожалуйста?

[Файлы] Запись-чтение-запись. Почему не прокатывает? - C++
Сначала записываю в файл &quot;а&quot; запись &quot;makulatura&quot;, потом читаю ее в строку h. Все ок. Но потом когда открываю файл &quot;a&quot; опять для записи с...

Чтение информации из файла - C++
В программе надо записать данные в карточку потом их записать в файл,а потом организовать считывание информации с файла.Так вот считывание...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NewTech
28 / 28 / 2
Регистрация: 06.11.2012
Сообщений: 168
10.06.2013, 03:09     Чтение из stdin и запись в stdout бинарной информации #2
Ой , я бы не стал использовать FC, эта такая штука непредсказуемая, как не сравниваю копию файла картинки с оригиналом, все время пишет, что они разные.
Лучше взять архив к примеру на 250 байт и его проверять на выходе, откроется или нет
Dr_Quake
Заблокирован
10.06.2013, 05:15     Чтение из stdin и запись в stdout бинарной информации #3

Не по теме:

FC Очень предсказуемая и точная программа, нефиг /b забывать и маны не читать.



Добавлено через 3 минуты
По делу - рекомендую ознакомиться с эталоном, там забавные трюки используются.

http://stackoverflow.com/questions/1...learn-and-edit

Добавлено через 1 минуту
ftp://ftp.tw.freebsd.org/pub/FreeBSD.../bin/cat/cat.c

Добавлено через 27 минут
P.S. Оно везде по ходу os-specific функции использует.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2013, 08:47     Чтение из stdin и запись в stdout бинарной информации
Еще ссылки по теме:

Чтение информации из файла - C++
Как сделать, чтобы после вот такого прочтения указатель позиционирования не перемещался на следующую строку? Дело в том, что мне нужно...

Чтение информации из файла - C++
// #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;clocale&gt; #include &lt;fstream&gt; #include &lt;string&gt; #include &lt;iomanip&gt; ...

Чтение и вывод информации из файла - C++
Имеется текстовый файл zarplaty.txt. Необходимо вывести содержимое файла на экран в консоль.(объясните ещё как с русским языком обстоит...

Чтение информации с открытой в браузере страницы! - C++
Имеется интернет страница, в которой постоянно перегружается фрейм(меняется его содержимое).. Требуется взять ссылку на единственную...

Списки, чтение и вывод информации в файл - C++
программа подсчета количества повторений всех слов, встретившихся в файле, заданном первым аргументом командной строки, и...

ID3 tag и чтение информации из него - C++
Как сделать чтение из id3 tag информации? я вообще хочу заносить название песни в так называемый плейлист( listbox)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
anmartex
...
1701 / 1194 / 495
Регистрация: 12.02.2013
Сообщений: 1,978
10.06.2013, 08:47     Чтение из stdin и запись в stdout бинарной информации #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Dragokas, я не пойму, вы говорите о бинарной информации, а сами всё норовите поработать с данными как с текстом.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
   char buff[50];
   const size_t nBuff = sizeof(buff) / sizeof(*buff);
   size_t n;
 
   while ((n = fread(buff, 1, nBuff, stdin)) > 0 )
   {
      fwrite(buff, n, 1, stdout);
   }
 
   return EXIT_SUCCESS;
}
Проверка банальная
Bash
1
$ ./program < program > result
Добавлено через 9 минут
Но т.к. у нас используется текстовый режим то имеет место быть преобразование 0x0D,0x0A в 0x0A и обратно

Добавлено через 12 минут
Решение для windows:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
 
int main()
{
   char buff[50];
   const size_t nBuff = sizeof(buff) / sizeof(*buff);
   size_t n;
 
   setmode(STDIN_FILENO, O_BINARY);
   setmode(STDOUT_FILENO, O_BINARY);
 
   while ((n = fread(buff, 1, nBuff, stdin)) > 0 )
   {
      fwrite(buff, n, 1, stdout);
   }
 
   return EXIT_SUCCESS;
}
А вот в linux-е бинарный режим идёт по дефолту.
Yandex
Объявления
10.06.2013, 08:47     Чтение из stdin и запись в stdout бинарной информации
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru