|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » как FILE перенаправить в строку. |
|
как FILE перенаправить в строку.
|
Пользователь Сообщения: 135 |
Профиль | Отправить PM | Цитировать Есть некая функция в одной либе.
прототип вроде этого: int FunctionName(FILE *STREAM, ... ); Возможно-ли и если да то как сделать чтобы она выводила в память а не файл. Нужно чтобы типа sprintf работала. |
|
Отправлено: 03:54, 04-06-2004 |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать Может, вместо fopen использовать fdopen? А с потоком уже работать...
|
Отправлено: 09:46, 04-06-2004 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать LДа, ещё вспомнил - посмотрите man mmap
|
Отправлено: 14:58, 04-06-2004 | #3 |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать hasherfrog
из мсдн: _fdopen, _wfdopen Associate a stream with a file that was previously opened for low-level I/O. Не понял как его можно связать со строкой? Еще в вндосе (вобщето это уже не С) есть фича файлмэпинг. Грубо - говоря пишешь в память, на самом деле пишешь в файл. А нужно наоборот. Пишешь в файл, на самом деле пишешь в память Как это можно приспособить без создания файла - непонятно. Файл создавать не хочу. Иначе бы вопроса небыло. |
Отправлено: 03:27, 05-06-2004 | #4 |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать Цитата:
Цитата:
Хотя если смотреть очень глубоко в недры ОС, Ч@рт его знает, что будет файлом а что памятью в каждый конкретный момент времени |
|||
Отправлено: 09:34, 07-06-2004 | #5 |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать hasherfrog
Если знаете как FILE связать со строкой приведите конкретный пример. "Стримов" разных много. И то что они легко перенаправляются - понятно. Не понятно как конкретный тип (FILE*) перенаправить. |
Отправлено: 03:05, 09-06-2004 | #6 |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать bilytur
Нет у меня конкретного примера. Не писал я такого никогда. Не представляю, зачем это нужно. Но примерно так: //временный файл - открываем через open, не fopen int fdMain = open("temp.tmp", O_CREAT | O_EXCL | O_TRUNC | O_RDWR); //копия для передачи в функцию FILE *fSubst = fdopen(fdMain, "w"); //предварительный буффер - не уверен, что он вообще нужен void *pTemp = malloc(1024); //А отсюда мы будем читать после возврата char * pMemory = (char *)mmap(pTemp, 1024, PROT_READ, MAP_PRIVATE, fdMain, 0); //теперь вызываем требуемую функцию FunctionName(fSubst, ... |
Отправлено: 10:00, 09-06-2004 | #7 |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать hasherfrog
Спасибо за код. Конкретные вещи всегда лучше "философствования" Обязательно попробую. Хотя Цитата:
В любом случае элегантного перенаправления FILE видимо нет, как с другими стримами. ( в MFC например) Извиняюсь за некоторую назойливость. Спасибо. |
|
Отправлено: 03:31, 10-06-2004 | #8 |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать bilytur
Я не сказал, но конечно, надо сделать [s]remove("temp.tmp"[/s] опосля работы. Насчёт MFC - я не совсем понял; Вы хотите сказать, что там есть элегантная работа (?) с FILE? ЕМНИП, там всё больше CFile. Я когда-то нехило с этим намучился. |
Отправлено: 09:42, 10-06-2004 | #9 |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать hasherfrog
Да нет с FILE конечно же нет, но там кроме CFile есть еще CArchiveStream, IStream (правда последний это уже ATL) и они неплохо дополняют друг-друга. По крайней мере создать поток в памяти как 2 пальца об асфальт. |
Отправлено: 03:22, 11-06-2004 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - [решено] Как перенаправить МОИ ДОКУМЕНТЫ на диск D??? | BlackDragon | Microsoft Windows 2000/XP | 3 | 16-11-2012 22:14 | |
CMD/BAT - [решено] как перенаправить на другой сайт при помощи bat файла | user171078 | Скриптовые языки администрирования Windows | 1 | 19-01-2010 08:19 | |
D-Link - Как перенаправить порты на D-Link DWL-2100AP | klip-org | Сетевое оборудование | 0 | 19-01-2009 14:53 | |
Интерфейс - Нужен твик -убрать в проводнике "Избранные ссылки", адресную строку и строку поиска | Mishechka | Microsoft Windows Vista | 18 | 16-09-2008 16:19 | |
как перенаправить на использование другого сквида? | Alexir | Программное обеспечение Linux и FreeBSD | 5 | 14-03-2007 11:14 |
|