The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Вывод бинарного файла на stdout в C/C++, !*! Indigo, 26-Апр-03, 20:04  [смотреть все]
При чтении текстовых файлов, этот код работает верно, но при чтении бинарных файлов на 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 бинарных файлов?

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

    Test format: %X %d %s

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

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

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

    • Вывод бинарного файла на stdout в C/C++, !*! XMan, 01:09 , 27-Апр-03 (3)
      Если ты говорил про оригинальный код, то смею несогласиться с утверждением: "Этот код одинаково правильно работает во всех случаях." Тот код работает только со строками, в которых отсутвуют коды меньше 20h и символ "%". О причине я писал в своем посте :)
  • Вывод бинарного файла на stdout в C/C++, !*! Indigo, 02:28 , 27-Апр-03 (4)
    Благодаря XMan всё решилось:

    fwrite(mc_buff,1024,1,stdout);

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




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

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