getc 和 fgetc 从输入流中获取下一个字符。请勿将这些例程的调用与相同逻辑单元中进行的正常 Fortran I/O 混在一起。
该函数的调用方式如下所示:
| 
 INTEGER*4 getc status = getc( char )  | 
|||
| 
 char  | 
 字符  | 
 输出  | 
 下一个字符  | 
| 
 返回值  | 
 INTEGER*4  | 
 输出  | 
 status=0:OK status=-1:文件结束 status>0:系统错误代码或 f95 I/O 错误代码  | 
示例:使用 getc 获取从键盘输入的每个字符;请注意 Ctrl-D (^D):
       character char
       INTEGER*4 getc, status
       status = 0
       do while ( status .eq. 0 )
         status = getc( char )
         write(*, ’(i3, o4.3)’) status, char
       end do
       end
 | 
编译之后,运行以上源代码的样例如下:
demo% a.out ab Program reads letters typed in 0 141 Program outputs status and octal value of the characters entered 0 142 141 represents ’a’, 142 is ’b’ 0 012 012 represents the RETURN key ^D terminated by a CONTROL-D. -1 377 Next attempt to read returns CONTROL-D demo%  | 
对于逻辑单元,请勿将正常的 Fortran 输入与 getc() 混在一起。
该函数的调用方式如下所示:
| 
 INTEGER*4 fgetc status = fgetc( lunit, char )  | 
|||
| 
 lunit  | 
 INTEGER*4  | 
 输入  | 
 逻辑单元  | 
| 
 char  | 
 字符  | 
 输出  | 
 下一个字符  | 
| 
 返回值  | 
 INTEGER*4  | 
 输出  | 
 status=-1:文件结束 status>0:系统错误代码或 f95 I/O 错误代码  | 
示例:使用 fgetc 从 tfgetc.data 中获取每个字符;请注意换行 (Octal 012):
       character char
       INTEGER*4 fgetc, status
       open( unit=1, file=’tfgetc.data’ )
       status = 0
       do while ( status .eq. 0 )
          status = fgetc( 1, char )
          write(*, ’(i3, o4.3)’) status, char
       end do
       end
 | 
编译之后,运行以上源代码的样例如下:
demo% cat tfgetc.data ab yz demo% a.out 0 141 ”a’ read 0 142 ”b’ read 0 012 linefeed read 0 171 ”y’ read 0 172 ”z’ read 0 012 linefeed read -1 012 CONTROL-D read demo%  | 
对于逻辑单元,请勿将正常的 Fortran 输入与 fgetc() 混在一起。
另请参见:getc(3S)、intro(2) 和 perror(3F)。