2

我有一个用 c 编写的沙箱代码,其中包含以下行: msb.sbox.task.ofd = STDOUT_FILENO;. 那就是可执行文件的输出被写入标准输出。我想改变它,所以输出被写入文件。我试过这样做

  FILE * fp;
  fp=fopen("myf","w");
  msb.sbox.task.ofd=fp;

但这给出了警告warning: assignment makes integer from pointer without a cast [enabled by default]。我该怎么做?

4

2 回答 2

5

尝试这个:

  FILE * fp;
  fp=fopen("myf","r");
  msb.sbox.task.ofd=fileno(fp);

STDOUT_FILENOint, 并且fp是指向结构的指针FILE,因此您的分配不正确。 fileno将从指向结构的指针返回文件描述符(int值)FILE,即fp.

于 2013-07-10T21:51:58.450 回答
4

如果看起来结构成员需要一个文件 ID 号,而不是指向流式文件缓冲区的指针。用于fileno从 获取 id FILE*

#include <stdio.h>

FILE * fp;
fp=fopen("myf","r");
msb.sbox.task.ofd=fileno(fp);
于 2013-07-10T21:51:47.737 回答