是否可以通过引用传递来更改C中函数内的FILE指针所指向的值?
这是一个尝试说明我正在尝试做什么的例子,我可以修改整数而不是文件指针,任何想法?
int main (void)
{
FILE* stream;
int a = 1;
configure_stream(rand() % 100, &a, &stream);
return 0;
}
void configure_stream(int value, int* modifyMe, FILE* stream)
{
*modifyMe = rand() % 100;
if (value > 50)
{
*stream = stderr;
}
else
{
*stream = stdout;
}
}
答案 0 :(得分:2)
尝试
void configure_stream(int value, int* modifyMe, FILE **stream)
^
*stream = stderr;
你所尝试的不正确:
void configure_stream(int value, int* modifyMe, FILE* stream)
*stream = stderr; /* Assign FILE * to FILE. */
您应该致电:configure_stream(..., &stream);
答案 1 :(得分:2)
我认为您要按如下方式声明您的configure_stream
void configure_stream(int value, int* modifyMe, FILE** stream)
{
*modifyMe = rand() % 100;
if (value > 50)
{
*stream = stderr;
}
else
{
*stream = stdout;
}
}
并将其与
一起使用configure_stream(rand()%100,& a,& stream)
这会获得一个指向FILE指针的指针。使用指向指针的指针,您可以修改FILE指针,而不会在大内存丛林中丢失它
答案 2 :(得分:1)
您正在向configure_stream传递指向FILE指针的指针。所以参数应声明为FILE **