irtn = c_read( getfilep( unitn ), inbyte, 1 ) |
|||
c_read |
C 函数 |
输入 |
用户自己的 C 函数。请参见示例。 |
unitn |
INTEGER*4 |
输入 |
外部单元编号。 |
getfilep |
INTEGER*4 或 INTEGER*8 |
返回值 |
如果已连接文件,则返回文件指针;如果未连接文件,则返回 -1。如果针对 64 位环境进行了编译,则返回 INTEGER*8 值 |
该函数用于将标准的 Fortran I/O 与 C I/O 混在一起。此类混合不可移植,也不保证在使用后续发行版本的操作系统或 Fortran 时可以进行此操作。建议不要使用该函数,并且没有提供直接的接口。必须创建自己的 C 例程,才能使用 getfilep 返回的值。下面所示是一个 C 例程样例。
示例:Fortran 通过将 getfilep 传递给 C 函数来使用 getfile:
demo% cat tgetfilepF.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 函数样例:
demo% cat tgetfilepC.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 tgetfilepC.c demo% f95 tgetfilepC.o tgetfilepF.f demo% a.out What is the digit? 3 The digit read by C is 3 demo% |
有关更多信息,请参见《Fortran 编程指南》中介绍 C-Fortran 接口的章节。另请参见 open(2)。