Sun Studio 12: Fortran ライブラリ・リファレンス

1.4.16 getcfgetc: 次の文字の取得

getcfgetc は、入力ストリームから次の文字を読み取ります。同じ論理装置上では、これらのルーチンの呼び出しを通常の Fortran の入出力と混合して使用しないでください。

1.4.16.1 getc: 標準入力からの次の文字の取得

関数は、次のように呼び出します。

INTEGER*4 getc

status = getc( char )

char

character

出力 

次の文字 

戻り値 

INTEGER*4

出力 

status=0: 正常

status=-1: ファイルの終了

status>0: システムエラーコードまたは f95 入出力エラーコード

例: getc でキーボードから文字を 1 文字ずつ入力します。 Control-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            プログラムが入力された文字を読み取る
0 141         プログラムが入力された文字の状態コードと 8 進値を出力する
0 142            141 は 'a' を、142 は 'b' を表す
0 012            012 はリターンキーを表す 
^D               Control-D キーで終了された
-1 377        次の読み取りが試行され Control-D が戻された
demo%

どの論理装置に対しても、通常の Fortran の入力と getc() を混在して使用しないでください。

1.4.16.2 fgetc: 指定した論理装置からの次の文字の取得

関数は、次のように呼び出します。

INTEGER*4 fgetc

status = fgetc( lunit, char )

lunit

INTEGER*4

入力 

論理装置 

char

character

出力 

次の文字 

戻り値 

INTEGER*4

出力 

status=-1: ファイルの終了

status>0: システムエラーコードまたは f95 入出力エラーコード

例: fgetctfgetc.data から文字を 1 文字ずつ読み取ります。改行 (8 進の 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' が読み取られる
0 142     'b' が読み取られる
0 012       改行が読み取られる
0 171       'y' が読み取られる
0 172      'z' が読み取られる
0 012       改行が読み取られる
-1 012      CONTROL-D が読み取られる
demo%

どの論理装置に対しても、通常の Fortran の入力と fgetc() を混在して使用しないでください。

参照: getc(3S)、intro(2)、 および perror(3F)