S (文件** pFile,const char *path,const char *模式,FILE *pFile );
在这里,freopen_s将文件指针stream与它所指向的任何内容断开关联,然后将其与位于path的文件关联起来。mode定义了使用这个特定指针stream可以做什么的限制。
据我所知,所有这些都与会发生的情况没有什么不同:
...
fclose( stream );
fopen_s( &stream, path, mode );
...我的问题是:pFile在那里做什么?自由开放也有它,作为返回值。在我看到的所有示例中,调用后的pFile也指向位于path的同一个文件。所以:
...
fclose( stream );
fopen_s( &stream, path, mode );
fopen_s( pFile, path, mode );
...真的是这样吗?
发布于 2014-02-08 16:57:26
当您继续阅读问题中引用的帮助时,您会找到答案:
`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。
https://stackoverflow.com/questions/21648342
复制相似问题