The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Вывод бинарного файла на stdout в C/C++"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Вывод бинарного файла на stdout в C/C++"
Сообщение от Indigo emailИскать по авторуВ закладки on 26-Апр-03, 20:04  (MSK)
При чтении текстовых файлов, этот код работает верно, но при чтении бинарных файлов на stdout уходят левые символы, которые ни один браузер не воспринимает за картинки.

FILE * mFile;
mFile = fopen(f_path,"r");
while (feof(mFile) == 0) {
  char mc_buff[1024]="";
  fread(mc_buff,1024,1,mFile);
  fprintf(stdout,mc_buff);
};
fclose(mFile);

Может просто есть спец. функция для вывода на stdout бинарных файлов?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Вывод бинарного файла на stdout в C/C++"
Сообщение от XMan Искать по авторуВ закладки on 27-Апр-03, 00:09  (MSK)
А ты прежде чем писать вопрос "man 3 fprintf" смотрел ? Ты в курсе, что после файла идет строка формата (так же как и в printf), а уж потом N-ое количество выводимых данных ? Можешь проверить - дать ему в файле f_path вместо бинарных данных, например, вот такую строку:

Test format: %X %d %s

Посмотришь, что он выдаст в результате, если конечно не свалится с "Segmentation fault" :)
Кстати, обычный printf тоже в stdout все выводит.

По хорошему, раз ты пользуешь fread то само напрашивается решение - для вывода пользуй fwrite :)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Вывод бинарного файла на stdout в C/C++"
Сообщение от Biwater emailИскать по авторуВ закладки on 27-Апр-03, 00:11  (MSK)
Для системы без разницы какие файлы выводить на stdout, будь они текстовые или бинарные. Этот код одинаково правильно работает во всех случаях. Другое дело, что в бинарных файлах находятся так называемые служебные сиволы, которые при выводе интерпретируются как призыв к тому или иному действию (возврат каретки, например, или символ конца строки). Тут кодировщик нужен UUEncoder, кажется так называется.  Кодируешь в текст бинарный файл и выводишь.


  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Вывод бинарного файла на stdout в C/C++"
Сообщение от XMan Искать по авторуВ закладки on 27-Апр-03, 01:09  (MSK)
Если ты говорил про оригинальный код, то смею несогласиться с утверждением: "Этот код одинаково правильно работает во всех случаях." Тот код работает только со строками, в которых отсутвуют коды меньше 20h и символ "%". О причине я писал в своем посте :)
  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Вывод бинарного файла на stdout в C/C++"
Сообщение от Indigo emailИскать по авторуВ закладки on 27-Апр-03, 02:28  (MSK)
Благодаря XMan всё решилось:

fwrite(mc_buff,1024,1,stdout);

Спасибо за помощь

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру