复制文件指针?

只是一个简单的问题:有没有办法复制文件指针(由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); 

您可以使用fileno来获取FILE*的描述符,将其fdopen ,然后使用fdopen从新描述符中获取新的FILE*

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

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

 //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);