Read a character from a stream
#include <stdio.h>
int fgetc( FILE* fp );
- fp
 
- The stream from which you want to read a character.
 
libc
Use the -l c option to
qcc
to link against this library.
This library is usually included automatically.
The fgetc() function reads the next character from the stream
specified by fp.
The next character from fp,
cast as (int)(unsigned char), 
or EOF if
end-of-file has been reached or if an error occurs
(errno is set).
  | 
Use
feof()
or
ferror()
to distinguish an end-of-file condition from an error. | 
 
- EAGAIN
 
- The O_NONBLOCK flag is set for the file descriptor
  underlying fp, and the process would be delayed in the
  write operation. 
 
- EBADF
 
- The file descriptor underlying fp isn't a valid
  file descriptor that's open for reading.
 
 
- EINTR
 
- The read operation was terminated due to the receipt of a signal,
  and no data was transferred. 
 
- EIO
 
- One of the following:
  
- A physical I/O error occurred.
  
 
- The process is in a background process group attempting to read from
    its controlling terminal, and either the process is ignoring or
    blocking the SIGTTIN signal or the process group is
    orphaned.
  
 
- (QNX Neutrino extension) The filesystem resides on a removable media
    device, and the media has been forcibly removed.
 
 
- ENOMEM
 
- Insufficient space is available.
 
- ENXIO
 
- A request was made of a nonexistent device, or the request was outside
  the capabilities of the device. 
 
- EOVERFLOW
 
- The file is a regular file, and an attempt was made to read at or
  beyond the offset maximum associated with the corresponding stream. 
 
#include <stdio.h>
#include <stdlib.h>
int main( void ) 
{
    FILE *fp;
    int c;
    fp = fopen( "file", "r" );
    if( fp != NULL ) {
        while( (c = fgetc( fp )) != EOF ) {
            fputc( c, stdout );
        }
        fclose( fp );
        
        return EXIT_SUCCESS;
    }
    
    return EXIT_FAILURE;
}
ANSI,
POSIX 1003.1
| Safety: |  | 
| Cancellation point | 
    Yes | 
| Interrupt handler | 
    No | 
| Signal handler | 
    No | 
| Thread | 
    Yes | 
errno,
feof(),
ferror(),
fgetchar(),
fgets(),
fopen(),
fputc(),
getc(),
gets(),
ungetc()