Форум программистов, компьютерный форум 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 не равняется ни одному из значений массива, то записываем его в другой массив. Если равнется, то просим ввести k еще раз и так до тех пор, пока введенное k не будет равняться ни одному элементу массива. printf("-->"); scanf("%i", &k); if ((k!=a) for (i=0; i<25; i++)) { ...
Файлы. Добавить в матрицу столбец, содержащий суммы элементов каждой строки. Преобразованную матрицу C++
В текстовом файле построчно хранится вещественная матрица размером не более 5х6. Добавить в эту матрицу столбец, содержащий суммы элементов каждой строки. Преобразованную матрицу записать в новый текстовый файл.
C++ Дан текстовый файл, содержащий целые числа. Определить в каждой четной строке максимальное число и записать результаты в новый текстовый файл http://www.cyberforum.ru/cpp-beginners/thread809349.html
Дан текстовый файл, содержащий целые числа. Определить в каждой четной строке максимальное число и записать результаты в новый текстовый файл
C++ Отсортировать элементы массива Здравствуйте, дорогие форумчане. Перейду сразу к делу. Нужно написать программу к следующему заданию: Задан массив, содержащий N элементов. Требуется переприсвоить его элементы так, чтобы отрицательные элементы оказались в начале массива, нулевые следующими, а в конце положительные. Так: (0,2,-1,1,-3,-2,3) => (-1, -3, -2, 0, 2, 1, 3) Помогите написать, пожалуйста. Заранее благодарен. С меня... подробнее

Показать сообщение отдельно
seelenus
 Аватар для seelenus
0 / 0 / 0
Регистрация: 07.07.2011
Сообщений: 36
15.03.2013, 15:06     fopen и fdopen
Помогите, пожалуйста, разобраться.
Есть код скрипта, выводит картинку в браузере, скачал с инета:
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").
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru