C++ 用c+;中的文件指针替换stdout和stdin+;?

C++ 用c+;中的文件指针替换stdout和stdin+;?,c++,posix,C++,Posix,我有一个用c编写的沙盒代码。其中有以下行: msb.sbox.task.ofd=STDOUT\u文件号。即可执行文件的输出被写入 标准输出。我想更改此设置,以便将输出写入文件。我尝试了这样做 这个 但这会给出警告:赋值从指针生成整数,而不使用强制转换[默认情况下启用]。如果结构成员期望的是文件id号,而不是指向流文件缓冲区的指针,我该怎么做。使用fileno从FILE*获取id #include <stdio.h> FILE * fp; fp=fopen("myf","r"); m

我有一个用c编写的沙盒代码。其中有以下行:
msb.sbox.task.ofd=STDOUT\u文件号。即可执行文件的输出被写入
标准输出。我想更改此设置,以便将输出写入文件。我尝试了这样做
这个


但这会给出警告:赋值从指针生成整数,而不使用强制转换[默认情况下启用]
。如果结构成员期望的是文件id号,而不是指向流文件缓冲区的指针,我该怎么做。使用
fileno
FILE*
获取id

#include <stdio.h>

FILE * fp;
fp=fopen("myf","r");
msb.sbox.task.ofd=fileno(fp);
#包括
文件*fp;
fp=fopen(“myf”,“r”);
msb.sbox.task.ofd=fileno(fp);
试试这个:

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

STDOUT\u FILENO
int
,而
fp
是指向
文件
结构的指针,因此您的赋值不正确。
<代码>文件名>代码>将从指针指向“代码>文件\ <代码>结构,返回文件描述符(<代码> INT/COD>值),即<代码> FP ./P> <代码> STDUTHOFFRONENO./COD>是POSIX,不是C++。know@sashasami难道你不应该打开文件来写,而不是读吗?@Adam yeah!!对不起,更正了错误。
  FILE * fp;
  fp=fopen("myf","r");
  msb.sbox.task.ofd=fileno(fp);