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

fopen и fdopen - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написать функцию для печати дерева http://www.cyberforum.ru/cpp-beginners/thread809364.html
Функцию печати для дерева. Важен порядок,печать узлов по уровням слева на права.нужен фрагмент программы.
C++ Сравнить структуру двух деревьев Написать два варианта функции(с рекурсией и без). Даны два дерева,два указателя на корни. Функция возвращает логическое значение:если структура деревьев одинакова,то возвращает истину,... http://www.cyberforum.ru/cpp-beginners/thread809362.html
C++ как в if поставить for?
Надо для всех значений массива проверить, равно ли какому либо из этих значений число введенное с клавиатуры. ЕСли k не равняется ни одному из значений массива, то записываем его в другой массив....
Файлы. Добавить в матрицу столбец, содержащий суммы элементов каждой строки. Преобразованную матрицу C++
В текстовом файле построчно хранится вещественная матрица размером не более 5х6. Добавить в эту матрицу столбец, содержащий суммы элементов каждой строки. Преобразованную матрицу записать в новый...
C++ Дан текстовый файл, содержащий целые числа. Определить в каждой четной строке максимальное число и записать результаты в новый текстовый файл http://www.cyberforum.ru/cpp-beginners/thread809349.html
Дан текстовый файл, содержащий целые числа. Определить в каждой четной строке максимальное число и записать результаты в новый текстовый файл
C++ Отсортировать элементы массива Здравствуйте, дорогие форумчане. Перейду сразу к делу. Нужно написать программу к следующему заданию: Задан массив, содержащий N элементов. Требуется переприсвоить его элементы так, чтобы... подробнее

Показать сообщение отдельно
seelenus
0 / 0 / 0
Регистрация: 07.07.2011
Сообщений: 36

fopen и fdopen - C++

15.03.2013, 15:06. Просмотров 815. Ответов 6
Метки (Все метки)

Помогите, пожалуйста, разобраться.
Есть код скрипта, выводит картинку в браузере, скачал с инета:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Результат работы скрипта - оторбажение картинки.
#include <stdio.h> 
 
// Возвращает размер открытого файла.
long filesize(FILE *f) { 
  long pos, size;
  pos = ftell(f); 
  fseek(f, 0, 2); 
  size = ftell(f); 
  fseek(f, pos, 0); 
  return size; 
} 
 
void main(void) {
  // Открываем потоки в режиме бинарного чтения и записи (обязательно!).
  FILE *f = fopen("test.gif", "rb");
  FILE *st = fdopen(fileno(stdout), "wb");  //строка, которуюпредлагаю заменить
  // Выводим необходимые заголовки. 
  fprintf(st, "Pragma: no-cache\r\n");
  fprintf(st, "Content-type: image/gif\r\n");
  fprintf(st, "Content-length: %d\r\n", filesize(f));
  fprintf(st, "\r\n");
  // Печатаем картинку блоками по 4000 байт.
  while (1) {
    char s[4000+1];
    int size = fread(s, 1, 4000, f);
    if (!size) break;
    fwrite(s, size, 1, st);
  }
}
Хочу понять почему в данном коде надо второй раз связывать уже другой поток st с файлом test.gif с помощью функции fdopen, и почему не работает, если его открыть второй раз вот так: FILE *st = fopen("test.gif", "wb").
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru