Сделайте указатель файла прочитать/записать в место в памятиC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Сделайте указатель файла прочитать/записать в место в памяти

Сообщение Anonymous »

Я могу сделать указатель файла записать в файл с fopen (). Но могу ли я сделать указатель файла, который сделает его таким вызовом, таким как FPUTC или FPRINTF, написать указатель в памяти? Примером этого является BytearrayOutputStream в Java. Также: могу ли я запустить его в обратном направлении, где библиотеке нуждается в указателе файла для чтения, поэтому я выделяю память и составить новый указатель файла, который будет считывать из этого местоположения памяти, но возвращать EOF, когда размер чанка закончится? (Как BytearrayinputStream в Java). Есть ли способ сделать это в C? Например: < /p>

Код: Выделить всё

FILE *p = new_memory_file_pointer();
fprintf(p, "Hello World!\n");
char *data = get_written_stuff(p);
printf("%s", data); //will print Hello World!
< /code>

&& /|| < /p>

char s[] = "Hello World!\n";
FILE *p = new_memory_file_pointer_read(s, sizeof(s));
char *buffer = (char *)malloc( 1024*sizeof(char) );
fread((void *)buffer, 1, sizeof(s), p);
printf("%s", buffer); //prints Hello World!
edit: к тем, кто читает этот вопрос годы спустя, в дополнение к принятому ответу, вы должны посмотреть на Open_Memsstream (3) , что ведет себя больше как эти классы Java, чем на fmemopen .

Подробнее здесь: https://stackoverflow.com/questions/513 ... y-location
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»