如果外部单元已连接,则 getfilep 返回外部单元编号的文件指针。如果该单元未连接,则返回的值为 -1。
此函数用于将标准 FORTRAN I/O 与 C I/O 混合使用。这样的混合是不可移植的,并且不担保可以在操作系统或 FORTRAN 的后续发行版中使用。建议不要使用此函数,并且未提供直接接口。要使用 getfilep 返回的值,必须输入您自己的 C 例程。下面显示了一个 C 例程样例。
下面是一个采用 getfilep 的 FORTRAN 主程序样例,文件 MixStdinmain.f:
character*1 inbyte integer*4 c_read, getfilep, unitn / 5 / external getfilep write(*,'(a,$)') 'What is the digit? ' irtn = c_read ( getfilep ( unitn ), inbyte, 1 ) write(*,9) inbyte 9 format('The digit read by C is ', a ) end
下面是一个实际使用 getfilep 的 C 函数样例,文件 MixStdin.c:
#include <stdio.h> int c_read_ ( fd, buf, nbytes, buf_len ) FILE **fd ; char *buf ; int *nbytes, buf_len ; { return fread ( buf, 1, *nbytes, *fd ) ; }
样例编译/生成/运行:
demo% cc -c MixStdin.c demo% f77 MixStdin.o MixStdinmain.f MixStdinmain.f: MAIN: demo% a.out What is the digit? 3 The digit read by C is 3
请参见《FORTRAN 77 User's Guide》中有关 C-FORTRAN 接口的章节。
libfui.a
open(2)
《FORTRAN 77 User's Guide》