复制文件指针?

时间:2011-05-23 15:24:12

标签: c file-io

一个简单的问题:有没有办法复制文件指针(fopen()返回的那些),类似于dup()如何复制open()等函数返回的文件处理程序?

基本上,我希望能够做到这样的事情:

FILE *fp = fopen("some_file", "r");
FILE *fp2 = /* do something to duplicate the file pointer */;
fclose(fp); // fp2 is still open
/* do something with fp2 */
fclose(fp2);

3 个答案:

答案 0 :(得分:16)

FILE *fp2 = fdopen (dup (fileno (fp)), "r");

答案 1 :(得分:10)

您可以使用fileno获取FILE*dup的描述符,然后使用fdopen从新版本中获取新的FILE*描述符。

答案 2 :(得分:0)

我打开了两次相同的文件并分配了两个指针,最后分别关闭了两个。在我的情况下,我必须使用一个指针在文本窗口中显示内容,并使用另一个指针处理文件中的数据。 e.g。

//define global variables

FILE *fp1 = fopen("some_file", "r");

//fp1 used in functioncall to display textbuffer 

fclose(fp1); 

//fp2 used in functioncall to process data 

fclose(fp2);