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