首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >freopen或freopen_s,他们到底在做什么?

freopen或freopen_s,他们到底在做什么?
EN

Stack Overflow用户
提问于 2014-02-08 16:09:20
回答 1查看 2.7K关注 0票数 2

S (文件** pFile,const char *path,const char *模式,FILE *pFile );

在这里,freopen_s将文件指针stream与它所指向的任何内容断开关联,然后将其与位于path的文件关联起来。mode定义了使用这个特定指针stream可以做什么的限制。

据我所知,所有这些都与会发生的情况没有什么不同:

代码语言:javascript
复制
...
fclose( stream );
fopen_s( &stream, path, mode );
...

我的问题是:pFile在那里做什么?自由开放也有它,作为返回值。在我看到的所有示例中,调用后的pFile也指向位于path的同一个文件。所以:

代码语言:javascript
复制
...
fclose( stream );
fopen_s( &stream, path, mode );
fopen_s( pFile, path, mode );
...

真的是这样吗?

EN

回答 1

Stack Overflow用户

发布于 2014-02-08 16:57:26

当您继续阅读问题中引用的帮助时,您会找到答案:

代码语言:javascript
复制
`freopen_s` is typically used to redirect the pre-opened files stdin, stdout, 
and stderr to files specified by the user.

因此,您不打算使用指向freopen的自定义文件指针。相反,它会影响到可能广泛使用的标准输出等等。

关于你的问题“真的是这样吗?”:是的。

编辑:关于另一个问题:我的问题是: pFile在那里做什么?

函数pFile参数freopen_s是指向FILE*的指针。该函数可以分配一个新的文件对象,用pFile返回新指针。可能会有运行时库不分配新对象,而是更改由*pFile间接传递的文件结构。但这在很大程度上取决于实现。

此外,非原子操作可能在fclose部分之后失败。在这种情况下,运行时可能会将用pFile传递的指针更改为NULL。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21648342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档