Fortran Library Reference

getc, fgetc: Get Next Character

getc and fgetc get the next character from the input stream.Do not mix calls to these routines with normal Fortran I/O on the same logical unit.

getc: Get Next Character from stdin

The function is called by:

INTEGER*4 getc

status = getc( char )

char

character

Output 

Next character  

Return value 

INTEGER*4

Output 

status=0: OK

status=-1: End of file

status>0: System error code or f77 I/O error code

Example: getc gets each character from the keyboard; note the 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

After compiling, a sample run of the above source is:


demo% a.out
ab            Program reads letters typed in 
^D               terminated by a CONTROL-D.
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
-1 012        Next attempt to read returns CONTROL-D
demo% 

For any logical unit, do not mix normal FORTRAN input with getc().

fgetc: Get Next Character from Specified Logical Unit

The function is called by:

INTEGER*4 fgetc

status = fgetc( lunit, char )

lunit

INTEGER*4

Input 

Logical unit  

char

character

Output 

Next character  

Return value 

INTEGER*4

Output 

status=-1: End of File

status>0: System error code or f77 I/O error code

Example: fgetc gets each character from tfgetc.data; note the linefeeds (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

After compiling, a sample run of the above source is:


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% 

For any logical unit, do not mix normal FORTRAN input with fgetc().

See also: getc(3S), intro(2), and perror(3F).