在C函数中更改文件指针指向的值

在C函数中更改文件指针指向的值,c,pointers,C,Pointers,是否可以通过引用传递来更改C中函数内的文件指针指向的值 这里有一个例子来说明我要做的事情,我可以修改整数,但不能修改文件指针,有什么想法吗 int main (void) { FILE* stream; int a = 1; configure_stream(rand() % 100, &a, &stream); return 0; } void configure_stream(int value, int* modifyMe, FILE* s

是否可以通过引用传递来更改C中函数内的文件指针指向的值

这里有一个例子来说明我要做的事情,我可以修改整数,但不能修改文件指针,有什么想法吗

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;
    }
}
试一试

您尝试的内容不正确:

void configure_stream(int value, int* modifyMe, FILE* stream)
    *stream  = stderr; /* Assign FILE * to FILE. */
编辑 您应该将其命名为:
configure_-stream(…,&stream)

试试看

您尝试的内容不正确:

void configure_stream(int value, int* modifyMe, FILE* stream)
    *stream  = stderr; /* Assign FILE * to FILE. */
编辑
您应该将其命名为:
configure_-stream(…,&stream)

您正在向configure\u stream传递指向文件指针的指针。因此,参数应该声明为FILE**

您正在向configure\u stream传递指向文件指针的指针。因此,应该将参数声明为FILE**

我想您应该如下声明您的configure\u流

void configure_stream(int value, int* modifyMe, FILE** stream)
{
    *modifyMe = rand() % 100;
    if (value > 50)
    {
        *stream = stderr;
    }
    else
    {
        *stream = stdout;
    }
}
和它一起使用

配置_流(rand()%100、&a和&stream)


这将获取指向文件指针的指针。使用指向指针的指针,您可以修改文件指针,而不必在内存的大丛林中丢失它

我认为您需要如下声明您的configure\u流

void configure_stream(int value, int* modifyMe, FILE** stream)
{
    *modifyMe = rand() % 100;
    if (value > 50)
    {
        *stream = stderr;
    }
    else
    {
        *stream = stdout;
    }
}
和它一起使用

配置_流(rand()%100、&a和&stream)


这将获取指向文件指针的指针。使用指向指针的指针,您可以修改文件指针,而不会在内存的大丛林中丢失它

谢谢,我现在明白了,我需要取消对文件指针的引用,然后为指针赋值。这段代码似乎可以工作。谢谢,我现在明白了,我需要取消引用一个文件指针,指针然后给它赋值。这个代码似乎有效。