更改文件指针指向C函数内部的值

时间:2011-08-06 07:31:33

标签: c pointers

是否可以通过引用传递来更改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;
    }
}

3 个答案:

答案 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 **