Как записать в буфер памяти с ФАЙЛОМ*?

У вас была implements ActionListener часть кода, когда вы получили ошибку? Эта ошибка возникает, когда у вас нет этой части.

Этот код, который вы разместили, компилируется без ошибок.

39
задан Ciro Santilli 新疆改造中心法轮功六四事件 29 March 2017 в 06:55
поделиться

4 ответа

Я предполагаю, что надлежащий ответ - это Kevin. Но вот взлом, чтобы сделать это с ФАЙЛОМ *. Обратите внимание, если размер буфера (здесь 100000) является слишком маленьким затем, потерю данных поскольку это выписано, когда буфер сбрасывается. Кроме того, если программа называет сброс (), Вы теряете данные.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
    FILE *f = fopen("/dev/null", "w");
    int i;
    int written = 0;
    char *buf = malloc(100000);
    setbuffer(f, buf, 100000);
    for (i = 0; i < 1000; i++)
    {
        written += fprintf(f, "Number %d\n", i);
    }
    for (i = 0; i < written; i++) {
        printf("%c", buf[i]);
    }
}
21
ответ дан Antti Huima 27 November 2019 в 02:16
поделиться

Вы могли использовать метод CStr TiXMLPrinter, который указывает документация:

TiXmlPrinter полезен, когда Вы должны:

  1. Печать к памяти (особенно в режиме не-STL)
  2. форматирование Управления (окончания строки, и т.д.)
2
ответ дан Kevin Loney 27 November 2019 в 02:16
поделиться

fmemopen может создавать ФАЙЛ из буфера, имеет ли это какой-то смысл для вас?

9
ответ дан 27 November 2019 в 02:16
поделиться

Я написал простой пример, как создать ФАЙЛ в памяти:

#include <unistd.h> 
#include <stdio.h> 

int main(){
  int p[2]; pipe(p); FILE *f = fdopen( p[1], "w" );

  if( !fork() ){
    fprintf( f, "working" );
    return 0;
  }

  fclose(f); close(p[1]);
  char buff[100]; int len;
  while( (len=read(p[0], buff, 100))>0 )
    printf(" from child: '%*s'", len, buff );
  puts("");
}
4
ответ дан 27 November 2019 в 02:16
поделиться