Я могу сделать указатель файла записать в файл с 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